我正在将Django应用程序部署到开发服务器上,当我运行pip install -r requirements.txt时,遇到了这个错误:

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一起分发。最初我认为这可能不会安装到virtualenv中的Python中,因此我使用以下命令将setuptools 2.6(与Python相同版本)安装到virtualenv中的Python站点包中:

sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages

编辑:这只发生在virtualenv内部。如果我在virtualenv之外打开一个控制台,那么pkg_resources是存在的,但我仍然得到相同的错误。

关于为什么pkg_resources不在路径上有任何想法吗?


当前回答

显然你缺少setuptools。一些virtualenv版本默认使用distribute而不是setuptools。在创建virtualenv时使用——setuptools选项,或者在您的环境中设置VIRTUALENV_SETUPTOOLS=1。

其他回答

我在谷歌应用程序引擎环境中遇到了这个错误。pip install -t lib setuptools修复了这个问题。

我在ubuntu 13.10上试图将rhodecode安装到virtualenv时看到过这个错误。对我来说,解决办法就是逃跑

pip install --upgrade setuptools
pip install --upgrade distribute 

在我运行easy_install rhodecode之前。

sudo apt-get install --reinstall python-pkg-resources

在Debian中为我修复了它。似乎卸载一些.deb包(在我的情况下是扭曲的)破坏了python用来查找包的路径

ImportError:没有名为pkg_resources的模块:解决方案是使用以下命令重新安装python pip。

操作步骤步骤1以root用户登录。

sudo su root

步骤:2如果存在,卸载python-pip包。

apt-get purge -y python-pip

3 .使用wget命令下载文件(在pwd中下载文件)

wget https://bootstrap.pypa.io/get-pip.py

步骤:4运行python文件。

python ./get-pip.py

步骤:5最后执行安装命令。

apt-get install python-pip

备注:必须为root用户。

对我来说,原来是站点包的权限问题。因为这只是我的开发环境,我提高了权限,一切都恢复正常了:

sudo chmod -R a+rwx /path/to/my/venv/lib/python2.7/site-packages/