我正在將一個Django應用程序部署到開發服務器,並在運行pip install -r requirements.txt
時遇到此錯誤: python
Traceback (most recent call last): File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module> from pkg_resources import load_entry_point ImportError: No module named pkg_resources
pkg_resources
彷佛隨setuptools
一塊兒setuptools
。 最初我認爲這可能沒有安裝到virtualenv中的Python,因此我使用如下命令將setuptools 2.6
(與Python相同的版本)安裝到virtualenv中的Python站點包: bootstrap
sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages
編輯:這隻發生在virtualenv內。 若是我在virtualenv以外打開一個控制檯,那麼存在pkg_resources
,但我仍然遇到一樣的錯誤。 ubuntu
關於爲何pkg_resources
不在路徑上的任何想法? 服務器
2018年7月更新 app
大多數人如今應該使用pip install setuptools
(可能使用sudo
)。 curl
有些人可能須要(從新)經過他們的包管理器安裝python-setuptools
包( apt-get install
, yum install
等)。 ui
此問題可能高度依賴於您的操做系統和開發環境。 若是以上內容不適合您,請參閱下面的遺產/其餘答案。 url
說明 spa
此錯誤消息是由缺乏/損壞的Python setuptools
包引發的。 Per Matt M.的註釋和setuptools問題#581 , 下面提到的引導腳本再也不是推薦的安裝方法。 操作系統
引導腳本說明將保留在下面,以防它對任何人都有幫助。
遺產答案
我在嘗試使用pip時遇到了一樣的ImportError
。 不知何故,個人Python環境中刪除了setuptools
包。
要解決此問題,請運行setuptools
的安裝腳本:
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
(或者若是您沒有安裝wget
(例如OS X),請嘗試
curl https://bootstrap.pypa.io/ez_setup.py | python
可能有sudo
前置。)
若是你有任何版本的distribute
版或任何低於0.6的setuptools
,你必須先卸載它。*
有關詳細信息,請參閱安裝說明
*若是您已經有工做distribute
,將其升級到「兼容包裝」,將您切換到setuptools
更容易。 但若是事情已經破裂,不要試試。
當我將virtualenv激活爲與建立它的人不一樣的用戶時,我遇到了這個問題。 這彷佛是一個許可問題。 當我嘗試@cwc的答案並在輸出中看到這個時,我發現了這個:
Installing easy_install script to /path/env/bin error: /path/env/bin/easy_install: Permission denied
切換回建立virtualenv的用戶,而後運行原始pip install
命令沒有問題。 但願這能夠幫助!
我今天也遇到了這個問題。 我只在虛擬環境中遇到問題。
個人解決方案是停用虛擬環境,刪除而後用pip卸載virtualenv並從新安裝它。 以後我爲個人項目建立了一個新的虛擬環境,而後pip在虛擬環境中和正常環境同樣工做正常。
它也發生在我身上。 我認爲若是在virtualenv使用setuptools時,requirements.txt包含「distribute」條目,則會出現問題。 Pip將嘗試修補setuptools以便爲分發騰出空間,但不幸的是它會在一半時間內失敗。
簡單的解決方案是刪除當前的virtualenv,而後使用--distribute參數建立一個新的virtualenv。
使用virtualenvwrapper的一個例子:
$ deactivate $ rmvirtualenv yourenv $ mkvirtualenv yourenv --distribute $ workon yourenv $ pip install -r requirements.txt
嘗試在ubuntu 13.10上安裝rhodecode到virtualenv時,我看到了這個錯誤。 對我來講,解決方案是運行
pip install --upgrade setuptools pip install --upgrade distribute
在我運行easy_install rhodecode以前。