用于配置命令之间依赖关系的setuptools插件

setuptools-cmd-deps的Python项目详细描述


setuptools命令deps

{1}$ pypi

轻松配置setuptools命令依赖项。在

为什么我需要这个插件

一旦自定义setuptools命令被定义并且需要在某个内置命令之前运行, 传统上,没有简单的方法,解决方案是重写内置命令, 在超级类中实现的命令之前调用新的自定义命令。在

通过这种方式,拥有一个额外的类并深入研究setuptools, 只是配置命令顺序或依赖关系。在

这可以通过使用setuptools-cmd-deps来简化: 启用插件并添加自定义配置。在

项目中的命令依赖关系

如果你的命令只是为了这个项目而不被重用, 您可以使用新的setup关键字cmd_deps来定义依赖关系。在

启用setuptools cmd deps

  • 如果您的setup.py只在安装了所有依赖的软件包之后运行, 在依赖项列表中添加setuptools-cmd-deps, 例如requirements.txt,或Pipfile。在

  • 如果您的setup.py支持耗尽venv, 您可能不希望在系统中安装这些软件包。 然后将setuptools-cmd-deps添加到setuptoolssetup_requires选项中。在

定义依赖关系

setuptools.setup(cmdclass={'generate_py':GenereatePy},cmd_deps={'build_py':['generate_py']},)

要共享的命令依赖项

如果您正在开发一个setuptools插件, 并希望命令定义被其他项目使用并在某个命令之前运行, 在entry_points中的setuptools.cmd_deps部分中指定依赖关系。在

为目标启用setuptools cmd deps

setuptools-cmd-deps添加到setuptoolsinstall_requires选项中, 因此,任何项目使用您的包时,都将自动使用setuptools-cmd-deps。在

定义依赖关系

一般来说,您的distutils.commands中已经有{}。在

例如,您在entry_points中定义了gernate_py命令,如下所示:

^{pr2}$

希望它总是在build_py之前运行。 只需在entry_points中添加setuptools.cmd_deps,如下所示

setuptools.cmd_deps =
    build_py_dep = build_py:generate_py

注意这里没有使用名称build_py_dep。 它只是针对TOML语法。 出于同样的原因,如果一个命令有多个依赖项, 它应该使用点.作为分隔符

setuptools.cmd_deps =
    command_dep = command:cmd1.cmd2

cmd1和{}都将在^{之前运行。在

或者你可以有多种规则

setuptools.cmd_deps =
    command_dep1 = command:cmd1
    command_dep2 = command:cmd2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Eclipse中使用ctrlshiftt而不是ctrlshiftr有什么好处?   java自动装箱概念SCJP   java如何使用JAXR和Resteasy、Angular和Wildfly10处理COR   java如何在整数数组中动态添加元素?   JAVA从继承生成器模式返回父对象继承   java问题调试生产者消费者问题   java MQ:已达到通道的最大实例数   JavaPowerMockMockito:我试图stubb的方法最终被调用   java Hibernate将多个列映射到一个表   在java中,将字符串中的单词大写,但跳过字符串中的数字和多余空格或符号   使用Eclipse将Java项目导出到JAR时出现“重复条目”错误   java使用eclipselink在实体表上指定NullConstraint   <Java>我可以在TCPIP中使用多个服务器socket吗?   带有自定义视图的java AlertDialog:调整大小以包装视图的内容   如何从用C#编写的web服务生成用于java的SOAP API?