从本地SVN检出安装pip包
我在我的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