2016-01-27 50 views
6

前言:我的OS X Python安裝是混亂。在我發現Homebrew之前,我開始使用系統Python方式。所以我一直在使用sudo pip install。我現在正在嘗試清理所有東西,然後安裝/鏈接針對Homebrew Python的pip包。在OS X中不允許「sudo pip卸載」操作(/ tmp)El Capitan

1)在許多SO答案中,人們建議做:pip freeze | xargs sudo pip uninstall -y這對我不起作用。我得到了很長的回溯。這是它的最有代表性的塊:

~ $ pip freeze | xargs sudo pip uninstall -y 
You are using pip version 7.1.2, however version 8.0.2 is available. 
You should consider upgrading via the 'pip install --upgrade pip' command. 
The directory '/Users/smaniato/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
Uninstalling altgraph-0.10.2: 
Exception: 
Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 211, in main 
[...] 
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py', "[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.py'"), ('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc', '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph/__init__.pyc', 
[...] 
"[Errno 1] Operation not permitted: '/tmp/pip-p8yIlU-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/altgraph'")] 

其中altgraph只是在pip list第一PIP封裝(記住這一點)。

2)然後我嘗試pip freeze | xargs sudo -H pip uninstall -y,因爲警告提示,但只是刪除警告。錯誤消息仍然存在。

3)我還嘗試過對任何引發投訴的目錄(例如,~/Library/Caches/pip及其一些父母和子女)進行chown。出於某種原因,我不能chown最容易出問題的目錄,/tmp

~ $ sudo chown -R ${USER} /tmp 
chown: /tmp: Operation not permitted 

4)最後,我手動試圖從卸載包進一步下跌的列表,瞧,我可以很容易例如做sudo pip uninstall virtualenv。試圖手動卸載altgraph導致上述相同的錯誤。

任何想法如何進行?請記住,我不關心任何一個包。我只是想要使用pip並從頭開始使用Homebrew的Python。謝謝!

更新:

  1. 手動下鄉名單,同樣的事情發生與bdist-mpkg-0.5.0
  2. 一些更多:matplotlibzope.interfacexattrsixscipypytz

回答

9

我很肯定brew reinstall python以某種方式解決了我遇到的一堆問題。然後我只好也核彈(即rm -rf)在/usr/local/lib/python2.7/site-packages

發行的幾件事情,並回答有關我的具體使用情況(ROS上安裝OS X):https://github.com/mikepurvis/ros-install-osx/issues/11

+1

安裝ROS時,我遇到了完全相同的問題。這有幫助,謝謝! –

+0

你必須從'site-packages'中刪除什麼? –

+0

我不記得Lenar,對不起。我想我刪除了那些沒有通過'pip'放置的東西 –

1

不要使用Homebrew或MacPorts,也不要使用內置的Python。這些嵌套解決方案最終會以某種方式失敗(PEP20:flat比嵌套更好)。至少,您將不得不等待包管理系統發現任何PyPI更新,或者退回到使用pip,因爲您可能會在沒有任何包管理器的情況下執行此操作。使用MacPorts僅安裝需要編譯和自定義的非Python項目(例如,ATLAS)。

最簡單的做法是從python.org(無論是從二進制發行版還是從源代碼版安裝)安裝獨立Python。沒有sudo,請在您的用戶下安裝。然後:

pip install -U pip setuptools virtualenvwrapper 

來源從~/.bashrc按他們的文檔,並makevirtualenv foo您的包裝。所有其他工作將僅在虛擬環境中執行。如果你使用Python 3,那麼virtualenv是解釋器的一部分,所以你不需要virtualenvwrapper和與它相關的小舞蹈。

+0

感謝Γιάννη。我一直有意使用'virtualenv'一段時間;這個問題可能是我需要的推動。我深入研究這個混亂的動機主要來自於在OS X上安裝ROS(https://github.com/mikepurvis/ros-install-osx)。可能有一種方法可以使用'virtualenv'來做到這一點,但我一直按照指示操​​作。 –

+1

我認爲我曾經通過MacPorts安裝ROS,但如果我再次這樣做,那麼我寧願從源代碼安裝。對於每一件事,第一次從源代碼構建可能需要一些時間,但可以通過bash腳本自動完成。 –

相關問題