我的存储库包含我自己的 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/