【问题标题】:pip install package still not following dependency linkspip install package 仍然没有跟随依赖链接
【发布时间】:2018-09-26 19:01:22
【问题描述】:

我在使用 setup.py 安装我的包时遇到了严重的问题,该包也有依赖链接。我已经彻底阅读了this answerthis one,包括接受的答案在内的所有答案都没有帮助。

这是尝试安装的软件包的setup.py。 基本上,它读取 requirements.txt 来填充 install_requires 和 dependency_links,其余大部分代码都是来自 cookie-cutter 的样板。 requirements.txt 中有一个导致问题的私有 github 存储库。例如git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy

当我运行pip install -r requirements.txt 时一切正常,它会安装私有存储库。但是,如果我尝试使用 pip install . --process-dependency-links 进行安装,我会收到此错误:

Could not find a version that satisfies the requirement pripy (from mypackage==<sha>) (from versions: )
No matching distribution found for pripy (from mypackage==<sha>)

如果我从需求中的链接中删除#egg=xxx,则pip install . 会完全忽略私有repo 包,但pip install -r requirements.txt 不会。

我已经确认dependency_links 包含'git+https://&lt;actual-token&gt;@github.com/jmerkow/pripy.git#egg=pripy' 并且install_requires 包含'pripy'

如何正确设置这是子包的问题吗? setup.py 在那个 repo 中做的几乎一样,除了没有私人链接。

【问题讨论】:

    标签: python pip setuptools


    【解决方案1】:

    呃,这总是发生。我把所有的工作都放在了这个问题上,然后我自己解决了。

    问题在于两件事,首先,所有dependeny_links 都需要有一个版本,其次要从需求文件中正确提取版本,您需要对字符串做一些魔术。

    与上面的 setup.py 相比,我更改了将需求添加到两个列表的方式(更新 here)。然后将版本添加到链接上的#egg=xxx,例如 git+https://${GITHUB_OAUTH_TOKEN}@github.com/jmerkow/pripy.git#egg=pripy-0.

    现在 setup.py 将解析该文件,获取 egg 版本信息,将其转换为 install_requires 的 pip 版本(基本上将第一个 '-' 替换为 '=='),然后您就可以开始了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 2014-11-21
      • 1970-01-01
      • 2022-11-24
      • 2021-07-05
      • 2021-05-04
      • 1970-01-01
      • 2021-07-14
      相关资源
      最近更新 更多