跨几个setup.py脚本共享代码的最佳方法?

sla*_*acy 4 python setuptools

我有几个我正在处理的软件包,我想在他们的setup.py脚本之间共享代码.有没有什么好方法可以做到这一点,还是代码重复我唯一的选择?

Mar*_*ers 8

通常setup.py是分发不同包的入口点.因此,很难在这些包之间共享代码.

如果您在其中使用setuptools(或它的fork distribute)setup.py,则可以指定在使用该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(...)
Run Code Online (Sandbox Code Playgroud)