You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

setup.py使用外部URL依赖跨平台安装失败:Ubuntu报404如何解决?

解决跨平台安装含Git依赖包的问题

这个问题的核心原因很明确:你在Ubuntu 18.04上用的pip 9.0.1版本太老了,它不支持PEP 508规范里直接在install_requires中使用@ git+URL的依赖格式。当pip 9.0.1看到fons @ git+https://github.com/binares/fons.git时,它会忽略Git地址,直接去PyPI上找名为fons的包,找不到就抛出404错误;而Windows上的pip 19.3.1已经支持这个新格式,所以能正常安装。

下面给你三个可行的解决方案,你可以根据自己的需求选择:

方案一:升级Ubuntu上的pip版本(最简单推荐)

旧版pip的兼容性问题是根源,直接升级pip到支持PEP 508 Git依赖的版本就能解决问题。执行以下命令:

  1. 先升级pip(如果怕影响系统全局pip,加上--user选项安装到用户目录):
pip3 install --user --upgrade pip
  1. 确保升级后的pip在PATH中(Ubuntu默认~/.local/bin会在PATH里,如果没有的话可以手动添加),然后再安装你的包:
pip3 install wsclient-0.1.0.tar.gz

这样升级后的pip就能正确识别install_requires里的Git依赖格式,和Windows上的行为一致。

方案二:修改setup.py兼容旧版pip(不升级pip的情况下)

如果因为某些原因不能升级pip,可以修改setup.py,用旧版pip支持的dependency_links参数来声明Git依赖:

修改后的setup.py代码如下:

setup(
    ...,  # 保留你原来的其他参数
    install_requires=['fons'],
    dependency_links=[
        # 注意#egg=后面的格式是包名-版本号,旧pip需要这个来识别依赖
        'git+https://github.com/binares/fons.git#egg=fons-0.1.0'
    ]
)

然后安装的时候需要加上--process-dependency-links选项,告诉旧pip去处理dependency_links里的链接:

pip3 install --process-dependency-links wsclient-0.1.0.tar.gz

⚠️ 注意:dependency_links在新版pip中已经被弃用,但新版pip仍然会兼容处理这个参数,所以修改后的setup.py在Windows的pip 19.3.1上也能正常工作。

方案三:手动提前安装Git依赖(临时应急方案)

如果不想修改代码也不想升级pip,可以先手动安装fons依赖,再安装你的包:

  1. 先安装fons:
pip3 install git+https://github.com/binares/fons.git
  1. 再安装wsclient:
pip3 install wsclient-0.1.0.tar.gz

这样pip在安装wsclient时,发现fons已经存在,就不会再去PyPI查找了。

内容的提问来源于stack exchange,提问作者binares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:08:20