在python setup.py文件中的特定提交处拉出git存储库

时间:2019-03-13 16:22:35

标签: python setup.py python-packaging

我有一个Python项目,正在使用来自Facebook研究的maskrcnn_benchmark项目。

在我的持续集成脚本中,我创建一个虚拟环境,并通过以下步骤在其中安装该项目:

 - git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
- cd maskrcnn-benchmark
- git reset --hard 5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6
- python setup.py build develop

这可以正常工作,并根据需要将所有内容安装在虚拟环境中。

现在我的项目中有一个setup.py,用于打包和部署我的应用程序。如何在此setup.py文件中执行相同的操作,即从特定的提交哈希中提取并构建此存储库?

由于下面的答案和评论,我现在具有setup.py:

install_requires=[
        '5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6-0.1',
        'ninja',
        'yacs',
        'matplotlib',
        'cython==0.28.5',
        'pymongo==3.7.1',
        'scipy==1.1.0',
        'torch==1.0.0',
        'torchvision==0.2.1',
        'opencv_python==3.4.2.17',
        'numpy==1.15.1',
        'gputil==1.3.0',
        'scikit_learn==0.19.2',
        'scikit_image==0.14.0',
        'sk_video==1.1.10'
  ],

dependency_links=[
        'http://github.com/facebookresearch/maskrcnn-benchmark/tarball/master#egg=5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6-0.1'
  ],

无论我将'5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6-0.1'放在哪里,都将首先编译maskrcnn-benchmark项目。我该怎么办,依赖项和此软件包最后安装?

2 个答案:

答案 0 :(得分:3)

您可以使用dependency_links setup.py

dependency_links =[https://github.com/GovindParashar136/spring-boot-web-jsp/tarball/master#egg=8138cc3fd4e11bde31e9343c16c60ea539f687d9]

您的网址

https://github.com/facebookresearch/maskrcnn-benchmark/tarball/master#egg=5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6

答案 1 :(得分:0)

This answer建议在git网址中包含package@前缀将安装指定的git commit:

# in setup.py
setup(
    # other fields
    install_requires=[
        "packagename@git+https://github.com/<user>/<repo>#<commit hash>",
    ],
)

所以在您的情况下:

# in setup.py
setup(
    # other fields
    install_requires=[
        "maskrcnn_benchmark@git+https://github.com/facebookresearch/maskrcnn-benchmark.git#5ec0b91cc85163ac3b58265b3f9b39bb327d0ba6",
    ],
)