pip install -e svn+ssh命令丢失SVN用户信息的问题
解决pip install -e使用SVN+SSH时丢失指定用户名的问题
我之前也遇到过一模一样的情况!问题核心在于pip解析SVN+SSH URL的逻辑有个小坑:它会自动尝试提取URL中的用户名部分,但处理时错误地丢掉了svn@里的用户名,导致连接SVN服务器时用的是当前系统用户,而非你指定的svn用户。
下面是几个经过验证的可行解决方案:
方法1:转义URL中的@符号
把URL里的@替换成URL编码的%40,这样pip就不会把它识别成用户名和主机的分隔符了。修改后的命令如下:
pip install -e svn+ssh://svn%4010.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv
这个转义操作能让pip正确识别出要使用svn用户建立SSH连接。
方法2:通过SSH配置文件指定默认用户
如果需要长期解决这个问题,推荐在~/.ssh/config中添加针对该SVN服务器的配置,强制默认登录用户为svn:
Host 10.210.1.24 User svn
保存配置后,直接使用简化的URL就能正常执行命令了:
pip install -e svn+ssh://10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv
之后不管是用原生svn命令还是通过pip调用,连接该主机时都会自动使用svn用户。
方法3:临时指定SSH命令参数
如果只是临时需要,你可以通过环境变量强制SSH使用svn用户,命令如下:
SSH_COMMAND="ssh -l svn" pip install -e svn+ssh://10.210.1.24/cidb/V1/trunk/config#egg=cidb_config_pipenv
这个方法不需要修改任何配置文件,适合单次临时使用的场景。
本质上,这个问题是pip的URL解析逻辑对SVN+SSH格式的处理不够完善,误判了用户名的边界。上面的几种方法都能绕开这个解析问题,确保连接时使用你指定的svn用户。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

