配置setup.py以从存储库URL安装需求

时间:2017-03-13 17:15:36

标签: python pip setuptools pypi egg

我正在创建一个模块,需要准备我的setup.py文件以满足一些要求。其中一个要求是已经在PyPI中的一个包的fork,所以我想直接引用我的GitHub存储库。

我尝试了两种配置,第一种是:

setup(
    'name': 'mymodule',
    # other arguments
    install_requires=[
        'myrequirement',  # The dependency name
    ],
    dependency_links=[
        'https://github.com/ihhcarus/myrequirement.git#egg=myrequirement',  # This is my repository location
    ]
)

我使用python setup.py sdist创建了我的模块的本地发行版,当我运行pip install path/to/module/dist/mymodule-0.1.tar.gz时,它最终在PyPI而不是我的存储库上安装版本。

另一个配置,我试图更改需求名称以强制搜索依赖关系链接,如下所示:

setup(
    'name': 'mymodule',
    # other arguments
    install_requires=[
        'myrequirement_alt',  # The dependency name with a suffix
    ],
    dependency_links=[
        'https://github.com/ihhcarus/myrequirement.git#egg=myrequirement_alt',  # This is my repository location
    ]
)

但有了这个,我最终得到的错误是找不到myrequirement_alt ......

所以我问,在不使用PyPI的情况下实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

要使依赖关系链接起作用,您需要将包的版本号添加到https://github.com/ihhcarus/myrequirement.git#egg=myrequirement_alt。  或者它不知道要安装什么。

e.g:

setup(
    'name': 'mymodule',
    # other arguments
    install_requires=[
        'myrequirement',  # The dependency name
    ],
    dependency_links=[
        'https://github.com/ihhcarus/myrequirement.git#egg=myrequirement_alt-1.3'  # Link with version at the end
    ]
)

请注意,我不推荐使用依赖关系链接,因为它们已被弃用。相反,您应该使用需求文件。