選項setup.py
(和pip
via --install-option
)似乎打破。使用--prefix當升級python軟件包
我需要維護一個共享的更新python軟件包的存儲庫,我沒有sudo
訪問權的機器上。理論上選項setup.py
(和點通過--install-option
)可以做我所需要的。
但是,如果已經有一個我正在系統目錄中安裝的軟件包版本,我無法將其安裝在我的私有存儲庫中。不使用--upgrade
進行安裝會失敗,因爲系統中已存在程序包,並且使用--upgrade
進行安裝會失敗,因爲無法刪除舊的程序包版本。這顯示在下面的錯誤消息中。
有什麼辦法可以防止安裝試圖刪除舊版本的軟件包嗎?或者,更可能的是,我只是不理解這應該如何工作?
$ pip --version
pip 1.5.6 from /python-local/lib/python2.7/site-packages (python 2.7)
$ pip install -U --install-option="--prefix=/python-local" virtualenv
Downloading/unpacking virtualenv from https://pypi.python.org/packages/py2.py3/v/virtualenv/virtualenv-1.11.6-py2.py3-none-any.whl#md5=c2aa2fc4986967815f8cb3a3418e6031
Downloading virtualenv-1.11.6-py2.py3-none-any.whl (1.6MB): 1.6MB downloaded
Installing collected packages: virtualenv
Found existing installation: virtualenv 1.7.1.2
Uninstalling virtualenv:
Cleaning up...
Exception:
Traceback (most recent call last):
File "/python-local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/python-local/lib/python2.7/site-packages/pip/commands/install.py", line 283, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/python-local/lib/python2.7/site-packages/pip/req.py", line 1431, in install
requirement.uninstall(auto_confirm=True)
File "/python-local/lib/python2.7/site-packages/pip/req.py", line 598, in uninstall
paths_to_remove.remove(auto_confirm)
File "/python-local/lib/python2.7/site-packages/pip/req.py", line 1836, in remove
renames(path, new_path)
File "/python-local/lib/python2.7/site-packages/pip/util.py", line 295, in renames
shutil.move(old, new)
File "/usr/lib/python2.7/shutil.py", line 300, in move
os.unlink(src)
OSError: [Errno 13] Permission denied: '/usr/bin/virtualenv'
Storing debug log for failure in /home/user/.pip/pip.log