Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 跨多个setup.py脚本共享代码的最佳方法?_Python_Setuptools - Fatal编程技术网

Python 跨多个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
是分发不同包的入口点。因此,很难在这些包之间共享代码

如果在
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
是用于安装脚本本身需要使用的依赖项。也许您可以帮我一下