我正在开发一个包含一些可选依赖项和“附加”的包。
目标: 我希望以下两件事起作用:
- 执行我的安装后代码
- 允许“额外”安装
状态:目前我已经能够:
使用
python setup.py install
或python setup.py develop
执行安装后代码;使用这里的方法https://stackoverflow.com/a/36902139/8473819用于
pip install PACKAGE[extra]
正确安装/管理额外的或不同的包配置。
在我的研究中,我没有发现python setup.py
允许“附加”的功能,也没有发现pip install
允许我的安装后代码执行的功能。*已更改,请参阅更新
笔记:
使用 pip 9.0.1、python 3.6
我的后期安装很简单,它只是获取一些关于可用资源的信息,创建一个文件,并使用print()
.
问题:我是否错过了一些功能,或者没有一种方法可以仅使用一种安装方法干净地完成这两个操作?
更新:
该pip install
方法实际上执行了我的安装后代码(打印在某处通过管道传输,仅使用-vvv
arg 可见)。另一个问题是(除非与 一起安装-e
)它使用临时构建目录,C:\Users\USER\AppData\Local\Temp\pip-ix4d6hv3-build
然后清理它,而不是在本地目录中构建。在这种情况下,我的文件创建要么不起作用,要么我无法找到文件的创建位置,要么被 pip 清理(我尝试--no-clean
了相同的结果)。
供他人参考:
如果从本地目录(不是 tar/whl/etc. 文件)安装,软件包将被复制到临时目录,请参阅 ^update^。然后一个setuptools.command.egg_info
子类 insetup.py
将在setuptools.command.install
or setuptools.command.develop
(passed in cmdclass
arg)之前执行。