2013-04-28 17 views
5

我試圖使用畫中畫在~/.local本地安裝包本地安裝包。問題是該軟件包(舊版本)已經在系統上全局可用。儘管全球Python包目錄在我PYTHONPATH,PIP仍拒絕安裝,以爲包裝的要求得到滿足。這類似於這裏所描述的問題,但我不使用sudo因此該解決方案並不適用:pip - Requirement already satisfied?使用畫中畫儘管全球滿足要求

如果我做的:

pip install --user numpy 

它說:

Requirement already satisfied (use --upgrade to upgrade): numpy in /usr/local/lib/python2.7/dist-packages/numpy-1.6.2-py2.7-linux-x86_64.egg 

然而, /usr/local/lib/...不在我的PYTHONPATH中。 PYTHONPATH中唯一的是~/.local

如果我嘗試這樣做:

pip install --user --upgrade numpy 

它下載numpy的和編譯它,然後覺得我做一個全球性儘管--user標誌的安裝,我也得到:

Installing collected packages: numpy 
    Found existing installation: numpy 1.6.2 
    Uninstalling numpy: 
Exception: 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/basecommand.py", line 107, in main 
    status = self.run(options, args) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/commands/install.py", line 261, in run 
    requirement_set.install(install_options, global_options) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1162, in install 
    requirement.uninstall(auto_confirm=True) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 495, in uninstall 
    paths_to_remove.remove(auto_confirm) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/req.py", line 1492, in remove 
    renames(path, new_path) 
    File "/usr/local/lib/python2.7/dist-packages/pip-1.2.1-py2.7.egg/pip/util.py", line 273, 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/f2py' 

如何這個問題能解決?我不確定它爲什麼會在通過--user標誌時嘗試執行需要全局權限的任何操作。

有沒有辦法告訴PIP只使用~/.local和不顧一切的系統上的其他人? (我不希望使用的virtualenv這是不必要在這裏,我不想多的環境中,只有一個!)

+0

你爲什麼不使用'virtualenv',這不是創建它的確切原因? – dm03514 2013-04-28 23:32:05

+3

numpy用pip打得不好。它試圖在'/ usr/bin /'上安裝'f2py'。可能是因爲它在python的'site-packages'之外。很有可能會有其他文件必須在其外部安裝,並且pip似乎不知道如何處理它。不確定virtualenv是否有幫助。 – tiago 2013-04-29 09:59:40

+0

@tiago * numpy與pip不兼容。它試圖在/usr/bin/上安裝f2py。否,它不會。這是點子試圖**卸載**系統numpy由於缺乏權限而失敗。看到我的答案。 – 2013-11-30 17:49:53

回答

2

Citing馬庫斯·史密斯(PIP的維護者):

如果你認爲全球網站是過時的,並希望在 用戶現場最新的,然後使用:
pip install --upgrade --user SomePackage

因爲(...)包(在舊版本)已經可以在全球範圍的系統上你必須使用--upgrade選項按照Marcus的說法。 卸載系統numpy的包可能是PIP的版本使用(1.2.1)中的錯誤。嘗試當前版本有關--user選擇,因爲許多問題被固定在1.3和1.4

編輯

馬庫斯·史密斯points具體的問題在他後來的註釋版本:

PIP 1.3具有#705,這對於使用--user和--upgrade 一起是至關重要的。