链接python安装脚本执行

时间:2015-11-02 15:33:55

标签: python git

我有一个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或类似的东西。

1 个答案:

答案 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,因此无需明确运行它们。