题 pip install似乎忽略了依赖链接


我有一个依赖于几个包的Python应用程序。遗憾的是,其中一个软件包不在PyPi中,所以我必须直接从git repo安装它。

我一直在尝试将它添加到我的setup.py中,如下所示:

setup(
..,
..,
dependency_links = [
                 'https://github.com/marcuz/libpynexmo.git#egg=nexmomessage'
    ],
install_requires=[
    ..,
    'nexmomessage'
],
packages=['localpackage']

然而它失败了:没有找到nexmomessage的发行版

我看到它创建依赖链接列表的位置:将dependency_links写入common.egg-info / dependency_links.txt - 当我查看该文件时,URL是正确的。

如果我在命令行运行它:pip install -e git +https://github.com/marcuz/libpynexmo.git#egg=nexmomessage

它安装没有问题。

思考?


5
2018-06-26 16:47




什么版本的 pip 你正在用吗? - detly
来自/Library/Python/2.7/site-packages(python 2.7)的pip 1.5.6 - Dave Holland


答案:


从第1.5点开始, 不推荐使用依赖关系链接。目前pip仍然可以被迫与它们一起使用 --process-dependency-links 旗。您可能还必须使用 --allow-external packagename 要么 --allow-unverified packagename,哪里 packagename 实际上指定了您想要安装的不在官方存储库中的依赖项

请注意,由于它已被弃用,因此 --process-dependency-links 国旗将很快被彻底删除。我认为首选的方法是提供一个 requirements.txt 文件。


6
2017-09-15 21:29



实际上,这也是我9月份得出的结论。虽然奇怪的是它能够从没有标志的命令行运行,但不能在setup.py中运行。最后,我联系了作者并做了一个衷心的请求,他把他的包裹拿到了pypi,让生活更轻松:) - Dave Holland
根据1.5发行说明,依赖链接不是“弃用” - 它是 --process-dependency-links 这是处理它们所必需的。此外,从8.0.0开始,您可以在requirements-file的新行中添加此选项,以便用户不必在命令行中键入它(请参阅 PIP#1274。 - ankostis


从第7点开始,它们再次启用。这意味着您现在可以使用 dependency_links 使用点子:

pip install -e /path/to/python/module --process-dependency-links --allow-all-external

如果你使用你的发行版系统pip,你可能需要升级pip:

pip install pip --upgrade

似乎已经在pull请求中发生了 #1519


2
2018-02-05 13:22



Aand in pip pip 9.0.1 当我这样做时,我得到了 DEPRECATION: --allow-all-external has been deprecated and will be removed in the future. Due to changes in the repository protocol, it no longer has any effect. 和 DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release. - Peter