【问题标题】:Configure setup.py to install requirement from repository URL配置 setup.py 以从存储库 URL 安装需求
【发布时间】:2017-08-03 19:38:02
【问题描述】:

我正在创建一个模块,需要准备我的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 is not found...

所以我问,不使用 PyPI 的正确方法是什么?

【问题讨论】:

  • 尝试使用 git 下载生成的链接。我想这会奏效。
  • @IrshadBhat 如果我直接运行pip install ...,它适用于我的存储库,但我仍然无法在setup.py 依赖项中使用它...
  • 你运行的是哪个版本的 pip?较新的版本要求您在安装时使用 --process-dependency-links 标志。
  • @nir0s 通过使用--process-dependency-links 标志我得到一个弃用错误:DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release.。结果似乎也一样......
  • 确实如此。它已被弃用,不应使用。您应该使用 requirements.txt 文件从 github 安装东西。结果相同是什么意思?它不是从链接安装的吗? (再次,您使用的是哪个版本的 pip?)。另外,请改用https://github.com/ihhcarus/myrequirement.git#egg=myrequirement_alt-VERSION。版本是您要安装的软件包版本。

标签: python pip setuptools pypi egg


【解决方案1】:

要使依赖链接正常工作,您需要将包的版本号添加到https://github.com/ihhcarus/myrequirement.git#egg=myrequirement_alt。 否则它将不知道要安装什么。

例如:

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
    ]
)

请注意,我不建议使用依赖链接,因为它们已被弃用。相反,您可能应该使用需求文件。

【讨论】:

  • 如何为我的模块设置requirements.txt 文件,以便与模块本身一起安装?
  • 你不能。需求文件必须使用 pip 的 -r 标志显式传递。这是另一个需要回答的问题。如果它解决了您的问题,请批准答案。
  • 我在哪里可以找到其他问题的答案?
猜你喜欢
  • 2012-04-14
  • 2014-11-07
  • 2019-05-18
  • 1970-01-01
  • 2011-11-29
  • 2012-10-19
  • 1970-01-01
  • 2015-05-06
  • 2021-10-31
相关资源
最近更新 更多