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

使用SSH+Git通过Poetry添加/安装Python依赖失败问题求助

解决Poetry通过SSH拉取Git私有仓库依赖的认证问题

咱们先把问题拆清楚:你手动用git clone git@github.com:myorg/myproj.git能正常搞定,但用Poetry执行poetry add或者poetry install就报错,而且全程没提示你输入SSH密钥的密码——这核心原因十有八九是Poetry运行的环境没连上你的SSH代理,导致没法用已有的密钥认证。

下面给你一步步排查和解决的办法:

1. 先确认SSH代理在干活,密钥已经加载

不管你是用Windows的Pageant,还是Git Bash里的ssh-agent,得先确保这俩玩意儿在运行,而且你的SSH私钥已经加进去了:

  • 用Pageant的话:打开Pageant小图标,看看你的密钥是不是在列表里。如果没在,点「Add Key」选你的私钥文件(比如id_rsa),输入密码后别关Pageant。
  • 用Git Bash的ssh-agent:打开Git Bash,输入ssh-add ~/.ssh/id_rsa,输完密钥密码后,这个终端窗口别关——ssh-agent就靠这个窗口活着呢。

2. 让Poetry跟着SSH代理的环境走

Poetry有时候会“隔离”自己的运行环境,没继承当前shell里的SSH相关变量(比如SSH_AUTH_SOCK),尤其是在Windows用PowerShell/CMD的时候。试试这俩办法:

办法A:从已经加载好密钥的终端跑Poetry

比如你刚才在Git Bash里执行ssh-add成功了,那就在同一个Git Bash窗口里直接跑poetry add git+ssh://git@github.com:myorg/myproj.git或者poetry install——这样Poetry就能拿到SSH代理的权限,不用再输密码。

办法B:指定Poetry用你测试过的Git程序

有时候Poetry会用自己内置的Git,或者系统里的Git路径不对。你可以手动指定它用你平时能用的那个Git:

# 配置Poetry使用你本地的Git路径(换成你实际的安装路径)
poetry config git.executable "C:\\Program Files\\Git\\cmd\\git.exe"

3. 检查pyproject.toml的配置(虽然你这格式大概率没问题)

顺便确认下依赖配置的格式,如果要指定分支/标签的话,得这么写:

myproj = { git = "git@github.com:myorg/myproj.git", branch = "main" }

要是不需要指定版本,你原来的写法也没问题,这步主要是排除格式错误。

4. 给Git加个SSH配置,避免密钥混淆

打开你的~/.ssh/config文件(Windows路径是C:\Users\你的用户名\.ssh\config),添加针对GitHub的配置:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

这样Git每次连GitHub都会用你指定的这个密钥,不会乱试其他密钥导致认证失败。

最后验证一下

先在终端跑ssh -T git@github.com,如果看到Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH认证没问题。然后在同一个终端里跑Poetry命令,应该就能正常拉取依赖了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 11:22:43