2014-11-21 115 views
0

選項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 

回答

0

答案是使用pip的--ignore-installed選項。只要在當前環境中顯示正在安裝的軟件包的只讀版本,就必須使用此選項。使用--user--local,或--prefix,以及當如果安裝成與--system-site-packages

創建的virtualenv這包括你可以找到在本節的最後提到http://pip.readthedocs.org/en/latest/user_guide.html#user-installspip install --help

此選項