python - 在setup.py中调用另一个setup.py

标签 python dependencies setuptools setup.py install-requires

我的存储库包含我自己的 python 模块和它的依赖项之一的子模块,它有自己的 setup.py。

我想在安装自己的lib时调用依赖的setupy.py,怎么可能?

我的第一次尝试:

 $ tree
.
├── dependency
│   └── setup.py
└── mylib
    └── setup.py


 $ cat mylib/setup.py 
from setuptools import setup

setup(
    name='mylib',
    install_requires= ["../dependency"]
    # ...
)

$ cd mylib && python setup.py install
error in arbalet_core setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'../depen'"

但是 install_requires 不接受路径。

我的第二次尝试是将 dependency_links=["../dependency"]install_requires=["dependency"] 一起使用,但是同名的依赖项已经存在在 Pypi 中,因此 setuptools 尝试使用该版本而不是我的版本。

什么是正确/最干净的方法?

最佳答案

一个可能的解决方案是在安装过程之前/之后运行自定义命令。

一个例子:

from setuptools import setup
from setuptools.command.install import install

import subprocess

class InstallLocalPackage(install):
    def run(self):
        install.run(self)
        subprocess.call(
            "python path_to/local_pkg/setup.py install", shell=True
        )

setup(
    ...,
    cmdclass={ 'install': InstallLocalPackage }
)

关于python - 在setup.py中调用另一个setup.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40831794/

相关文章:

go - 确定为什么每行都出现在go.sum中

pip 安装包不是来自 pypi,其名称与 pypi 中的名称相同(+ 具有来自 pypi 的依赖项)

python - 将 --tag-build 或 --tag-date 传递给 setuptools PEP 517 builder

Python 包附加名称

python - 使用 Python Tk 作为线程代码的前端

Python:使用 numpy 读取复杂的文本文件

C++ 两个库依赖于相同的库但不同的版本?

python - 如何为现有 GitHub 存储库创建 Xcode 项目

python - 用于 Python 的 XMPP 服务器

java - LocationAwareLogger 上的 SLF4J NoSuchMethodError