Python3。设置工具。将本地包添加到程序集

Python3. Setuptools. Adding a local package to an assembly

有一个本地构建的包(例如main-0.1.tar.gz)。还有另一个包(例如 base-0.1)需要 main-0.1 作为依赖项。

需要在后续安装base-0.1包时,同时安装main-0.1包。

那些。您可以在 install_requires 中仅指定带有 PyPI 的包,但不清楚如何在本地向程序集添加包。

您可以使用 [=22= 将包 main-0.1.tag.gz 添加到 base-0.1 存档]MANIFEST.in (include main-0.1.tag.gz)。但进一步 dependency_links,例如,不能正常工作。

如何将本地包添加到另一个包的构建中,然后将其与另一个包一起安装,就好像它是从 PyPI 中提取的一样?

找到一个粗略的解决方案。不知道对风水有多大影响,但是很管用

include main-0.1.tar.gz添加到MANIFEST.in

setup.py中,在文件末尾(调用setup()后)添加:

if 'sdist' not in sys.argv[1]:
    os.system('pip install main-0.1.tar.gz')

条件可能会有所不同,例如,sdist 未用于构建 (python setup.py sdist)。主要是想办法确定这是运行setup组装,而不是安装(以后pip install base-0.1.tar.gz)。

在这种情况下,我们将本地依赖包复制到正在构建的包的存档中,并相应地与它一起分发。并以同样的方式安装。

您可能想看看:

import setuptools

setuptools.setup(
    # [...]
    install_requires = [
        'main @ file:///path/to/main-0.1.tar.gz'
        # [...]
    ],
)

或者(实际上可能更好),使用 pip install options:

的某种组合
pip install --no-index --find-links '/path/to/distributions' main base

参考: