我有几个我正在处理的软件包,我想在他们的setup.py脚本之间共享代码。有没有什么好方法可以做到这一点,还是代码重复我唯一的选择?
答案 0 :(得分:8)
通常setup.py
是分发不同包的入口点。因此,很难在这些软件包之间共享代码。
如果您在setup.py
中使用setuptools
(或它的分叉distribute
),则可以指定在安装软件包时必须安装的软件包setup_requires
条目。
不幸的是,您的setup.py
先被执行;解析setup_requires
行后,其中列出的额外软件包将在本地安装,但这可能为您的需求太晚。
解决方法是在调用定义Distribution
条目的setup
之前创建单独的setup_requires
对象:
import setuptools
setuptools.dist.Distribution(dict(setup_requires='yoursharedsetuppackage'))
# `setup_requires` is parsed and acted upon immediately; from here on out
# the yoursharedsetuppackage is installed and importable.
import yoursharedsetuppackage
setup(...)