2013-08-22 44 views
3

在OSX 10.7.5上,我試圖使用pip3命令將軟件包安裝到python3。當我嘗試,我收到此錯誤信息:pip3說「解決pkg_resources.DistributionNotFound:pip == 1.3.1」

zak$ pip3 
Traceback (most recent call last): 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2793, in <module> 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 673, in require 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 580, in resolve 
pkg_resources.VersionConflict: (pip 1.4.1 (/usr/local/lib/python3.3/site-packages), Requirement.parse('pip==1.3.1')) 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/usr/local/bin/pip3", line 5, in <module> 
    from pkg_resources import load_entry_point 
    File "<frozen importlib._bootstrap>", line 1567, in _find_and_load 
    File "<frozen importlib._bootstrap>", line 1534, in _find_and_load_unlocked 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 2797, in <module> 
    File "/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-1.0-py3.3.egg/pkg_resources.py", line 576, in resolve 
pkg_resources.DistributionNotFound: pip==1.3.1 

看起來setuptools要求很高的老版本PIP的(我已經安裝了1.4.1),但是爲什麼呢?我怎樣才能解決這個問題?

+1

你有沒有安裝任何東西,還是使用Homebrew的'pip'開箱即用?我不會對後者感到驚訝,因爲setuptools 1.0是相當新穎的,並且有一些後向不兼容性,並且Homebrew的配方可能還沒有完全更新......但是,排除早期安裝中不兼容的剩菜將是很好的。 ,你已經分發了,然後安裝了一個最近的setuptools,而不用先卸載分發)。 – abarnert

+1

另外,你有'PYTHONPATH'嗎?如果你在Python中打印(sys.path)',這些目錄中的任何目錄是否與你的機器上的其他Python安裝共享? – abarnert

+1

經過一番混淆之後,我可以通過安裝一個Python.org 3.3(在PATH上放置'/ Library/Frameworks/Python.framework/Versions/3.3/bin'而不是鏈接到'/ usr/local/bin'),安裝pip 1.3.1及其最小的依賴關係,然後用它的pip 1.4.1安裝Homebrew 3.3。我最終用'/ usr/local/bin/pip3'作爲1.3.1 python.org腳本,但是指向'/ usr/local/bin/python3.3',這是Homebrew版本,它找到了pip 1.4 .1放在'/ usr/local/lib/python3.3/site-packages'中。 – abarnert

回答

2

問題似乎是你有兩個不同的Python 3.3安裝和一個共享的site-packages目錄。*你運行的工具pip3來自pip 1.3.1,但是它用來完成工作的模塊來自點1.4.1。

解決這個問題的最簡單方法是,除非你真的需要同時安裝Python 3.3,否則完全去掉它們,然後重新安裝你想要的。

以下內容應該可行(可能與sudo的一些命令 - 或者使用Finder並讓它告訴你是否需要驗證)。

請注意,這將部分或完全刪除任何其他第三方Python版本(例如,python.org 2.7.5),我認爲這不是一個問題,但可以爲未來的讀者。

您可能希望在卸載任何內容之前製作所有已安裝軟件包的列表。 (我通常以最簡單的方式做到這一點:啓動ipython,並讓它完成一個導入語句...)

最後,這些細節中的一些對於將來有類似問題的讀者會有所不同,但基本想法應該是一樣的。

  • brew uninstall python3
  • rm -rf /Library/Frameworks/Python.framework
  • rm -rf /usr/local/lib/python*
  • rm -rf /usr/local/share/python*
  • 查找其中~/.bash_profile(或~/.profile或其他地方)添加了Python路徑到PATH。您可能在Python.frameworkCellar/python3內有/usr/local/share/python3和/或其他內容。將所有找到的東西全部廢棄。
  • 在Terminal.app中啓動一個新的shell。
  • brew doctor,並修復它抱怨的任何似乎潛在相關的東西(非Homebrew MacFUSE的東西是好的; brew prune建議可能值得做,但這裏沒關係),並再次運行確保。
  • brew install python3
  • pip3重新安裝您刪除的所有包,你需要再次。

*詳細內容:

  • 自制的Python 3.3安裝在/usr/local/Cellar/python3/3.3.2/,有各種各樣的東西符號鏈接到/usr/local/bin和它的兄弟姐妹,並可能爲/Library地方。
  • 另一個Python 3.3,可能從python.org安裝程序,安裝在/Library/Frameworks/Python.framework/Versions/3.3/,有各種各樣的東西可能到符號鏈接或/usr/local/bin以其他方式添加到您的PATH。
  • 兩者在其網站包搜索中可能都包含/usr/local/lib/python3.3
0

運行

pip install --upgrade setuptools

後,我才得以修復。但對於我仍然在學習Python的人來說,這可能並非如此。