从本地SVN检出安装pip包

3 投票
1 回答
4465 浏览
提问于 2025-04-16 15:38

我在我的svn仓库里有一个克隆的Python项目(里面有setup.py等文件)。我想让pip从这个目录安装这个项目。不过这个svn仓库是内部的,访问方式是svn://,而不是http://

我可以像这样顺利地检出这个目录:svn co svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version ./foobar,然后用pip安装:pip install foobar/,但是我无法一次性完成这两个步骤。

这是我尝试过的和输出的结果:

pip install svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version
...
  File ".../virtualenv/lib/python2.5/site-packages/pip-0.7.2-py2.5.egg/pip/vcs/__init__.py", line 110, in get_url_rev
    url = self.url.split('+', 1)[1]
IndexError: list index out of range

还有

pip install svn+svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version
...
File "...virtualenv/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg/pkg_resources.py", line 2424, in scan_list
raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
ValueError: ('Expected version spec in', 'svn+svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version', 'at', '+svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version')

这两个问题在URL末尾加不加#egg=packagename时都会出现(错误信息是一样的)。

还有作为可编辑的URL:

pip install -e svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version#egg=package
Obtaining package from svn+svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version#egg=package
  Checking out svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version#egg=package to ../virtualenv/src/package
svn: URL 'svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version#egg=package' is not properly URI-encoded

所以如果在URL末尾加上#egg=package,SVN会报错,如果不加的话,我就会收到这个错误:

pip install -e svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version
--editable=svn://172.31.1.3/Development/Common/ThirdParty/Python/package/our-version is not the right format; it must have #egg=Package

我该如何通过pip从SVN链接安装一个包呢?

1 个回答

3

现在这个问题是个公开的bug。Paul Nasrat正在查看这个问题,并且已经开了一个相关的讨论。

可以关注这个链接了解更多信息:https://github.com/pypa/pip/issues/252

撰写回答