python 在 setup.py 中使用动态配置安装 setuptools

python setuptools install with dynamic configuration in setup.py

是否可以在 setup.py 中使用动态配置?

我有一个 python 应用程序,它是向后端 api 发出请求的脚本集合。我想动态自定义安装的脚本,可能通过将标志传递给 pip install 命令。

一个例子setup.py

from setuptools import setup, find_packages
setup(
  name='my-app',
  version='0.0.1',
  packages=find_packages(),
  scripts=['bin/do_stuff',
           'bin/do_other_stuff'
  ],
)

我想根据安装标志动态修改 'scripts' 的内容,以添加其他路径。

这可能吗?

pip 允许通过 --install-option 将非标准参数传递给 setup.py,但您必须在调用 setup() 之前从 sys.argv 中删除参数。所以你最好是通过环境变量传递额外的信息:

MY_EXTRA_INFO=add_script pip install

获取setup.py中的变量:

if 'MY_EXTRA_INFO' in os.environ:
    add_scripts = ['bin/add_script']
else:
    add_scripts = []

setup(
  scripts=['bin/do_stuff',
           'bin/do_other_stuff'
  ] + add_scripts,
)