Python 跨多个setup.py脚本共享代码的最佳方法?
我有几个正在开发的软件包,我想在它们的setup.py脚本之间共享代码。有没有什么好方法可以做到这一点,或者代码复制是我唯一的选择 通常Python 跨多个setup.py脚本共享代码的最佳方法?,python,setuptools,Python,Setuptools,我有几个正在开发的软件包,我想在它们的setup.py脚本之间共享代码。有没有什么好方法可以做到这一点,或者代码复制是我唯一的选择 通常setup.py是分发不同包的入口点。因此,很难在这些包之间共享代码 如果在setup.py中使用(或其fork),则可以指定在使用setup\u requires条目安装软件包时必须安装的软件包 不幸的是,首先执行的是setup.py;一旦解析了setup\u requires行,将在本地安装列出的额外软件包,但这对于您的需要来说可能太晚了 解决方法是在调用s
setup.py
是分发不同包的入口点。因此,很难在这些包之间共享代码
如果在setup.py
中使用(或其fork),则可以指定在使用setup\u requires
条目安装软件包时必须安装的软件包
不幸的是,首先执行的是setup.py
;一旦解析了setup\u requires
行,将在本地安装列出的额外软件包,但这对于您的需要来说可能太晚了
解决方法是在调用setup
之前创建一个单独的Distribution
对象,该对象定义setup\u所需的
条目:
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(...)
作为独立软件包,它们必须能够引用共享代码。。。您可以在包中创建对此共享代码的依赖项,强制用户(或包管理器)首先安装依赖项,或者在每个包中内部复制它。对于本地、内部软件包,您可以随意导入,但这充其量只是黑客行为。@Nisan.H:实际上,您可以指示安装程序获取安装依赖项,请参见下面的回答。如果我将其包含在
安装程序所需的中,此解决方案似乎可以编译numpy
。有没有办法用pip
来安装numpy呢?@aaragon:为什么需要安装numpy呢?如果您真的这样做了,那么不,为了确保安装成功,将首先为安装安装它。如果您可以避免这个需求(通过使用不需要numpy
来创建安装程序的Python代码),那么就这样做。我正在创建一个库,它也用作应用程序,因此对于最终用户,我需要一种简单的方法来安装依赖项。我本想使用setup.py来实现这一点,但它实际上构建了它,而不是从二进制文件安装numpy。有什么建议吗?@aaragon:那就用install\u requires
,而不是setup\u requires
setup\u requires
是用于安装脚本本身需要使用的依赖项。也许您可以帮我一下