如何在setup.py中添加Git仓库子目录依赖链接并解决git+ssh错误
解决在setup.py中安装另一个仓库子目录模块的问题
你遇到的unknown url type: git+ssh错误,核心原因是旧的dependency_links机制已经被打包工具废弃,且新版本的pip/setuptools不再支持这种写法。下面是具体的解决步骤和说明:
为什么会出错?
dependency_links在setuptools 42.0.0版本后就被正式弃用,pip从19.0版本开始也不再处理这个参数。同时旧版本的工具对git+ssh格式的URL解析支持也不完善,这直接导致了你看到的错误提示。
正确的解决方案
1. 先升级打包工具版本
首先确保你使用的是最新版的pip、setuptools和wheel,避免版本兼容问题:
pip install --upgrade pip setuptools wheel
2. 修改第一个仓库的setup.py
移除dependency_links参数,直接在install_requires里指定包含子目录的Git URL依赖:
from setuptools import setup setup( name="your-first-repo-name", version="0.1.0", # 补充其他必要参数(比如packages、author等) install_requires=[ # 格式规则:包名 @ git+ssh://Git仓库URL@分支#subdirectory=子目录路径 "repo @ git+ssh://git@bitbucket.aaaaaaa.aa:0000/project/repo@master#subdirectory=folder2" ] )
3. 使用pip开发模式安装(替代旧命令)
现在推荐用pip的-e选项来安装开发模式,取代过时的python setup.py develop命令:
pip install -e .
额外注意事项
- 确认Git客户端已安装:如果系统里没有Git命令行工具,pip无法克隆Git仓库,也会触发URL解析错误。可以执行
git --version来验证Git是否正常可用。 - 推荐配置pyproject.toml:为了更好适配现代打包标准,建议在第一个仓库根目录创建
pyproject.toml文件,指定构建后端:
[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta"
这个文件会告诉打包工具使用正确的构建链。
兼容旧环境的替代方案
如果必须使用旧版本工具,可以先手动安装第二个仓库的子目录模块,再安装第一个仓库:
pip install git+ssh://git@bitbucket.aaaaaaa.aa:0000/project/repo@master#subdirectory=folder2 pip install -e .
内容的提问来源于stack exchange,提问作者kiui
相关产品推荐
相关产品推荐

