我有一个python包依赖于其他两个python包,我不想将它们分发为鸡蛋或轮子。
我已经设置了我的git模块文件来提取这些软件包,但是,现在我想为主软件包创建我的setup.py脚本,这样它也会运行两个子模块的setup.py脚本。
我可以通过在主setup.py脚本中添加以下内容来以一种黑客的方式执行此操作:
# run the setup for the sub modules.
from subprocess import Popen
import os
import sys
dir1 = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'src/module1')
dir2 = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'src/module2')
# check to make sure the directories exist
if os.path.exists(dir1) and os.path.exists(dir2):
install1 = Popen('cd '+dir1+'; python setup.py install;', shell=True)
install2 = Popen('cd '+dir2+'; python setup.py install;', shell=True)
else:
print "sub-modules not found, did you clone with the recursive tag?"
sys.exit()
但是,我想知道是否有一种可接受的方法可以使用setuptools或类似的东西。
答案 0 :(得分:1)
要使用所有相关模块分发您的应用程序,您可以在主程序包的根文件夹中使用pip
requirements.txt
。
即,您使用
安装其他软件包 pip install git+git://github.com/myuser/foo.git@v123
...
然后转储已安装软件包的列表
pip freeze > requirements.txt
最后将以下安装步骤添加到自述文件中
pip install -r requirements.txt
Pip会自动在子模块中运行setup.py
,因此无需明确运行它们。