使用pipenv和setup.py安装私有仓库失败问题求助
你遇到的问题其实是因为 dependency_links 这个参数已经被 pip 弃用 了——从 pip 19.0 版本开始,它就不再读取这个配置项,而 Pipenv 底层依赖的是 pip,自然也不会识别 setup.py 里的 dependency_links。至于为什么 python setup.py install 还能正常工作,是因为 setuptools 本身暂时还保留了对这个旧参数的支持,但这已经是过时的用法了。
下面给你两种靠谱的解决办法,都是符合当前 Python 依赖管理标准的:
方法一:改用 PEP 508 格式声明依赖(推荐)
PEP 508 是现在 Python 官方推荐的依赖声明格式,直接把私有库的 Git 地址写在 install_requires 里就行,pip 和 Pipenv 都能正确识别。修改你的 setup.py 如下:
setup( name='mypack', version='0.1', install_requires=[ # 用 @ 符号指定依赖的 Git 地址和版本/分支/标签 'otherpack @ git+ssh://git@gitlab.com/theSage21/otherpack@0.1' ] )
这样修改后,再运行 pipenv install -e . --verbose,Pipenv 就会直接从指定的 Git 仓库拉取 otherpack==0.1,而不会去 PyPI 搜索了。
方法二:直接在 Pipfile 中指定私有依赖
如果你不想修改 setup.py,也可以手动在项目的 Pipfile 里添加 otherpack 的配置。找到 Pipfile 里的 [packages] 区块,添加:
[packages] mypack = {editable = true, path = "."} otherpack = {git = "ssh://git@gitlab.com/theSage21/otherpack", ref = "0.1"}
添加完成后,运行 pipenv install --verbose 就能正确安装依赖了。
额外提醒
dependency_links 已经被官方标记为废弃,后续版本的 setuptools 也可能移除对它的支持,所以建议尽快迁移到 PEP 508 格式,避免以后出现兼容性问题。
内容的提问来源于stack exchange,提问作者arjoonn

