我正在将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:

$ sudo wget https://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefefe74e
$ tar -zxvf setuptools-0.6c11.tar.gz
$ cd setuptools-0.6c11/
$ sudo python setup.py build
$ sudo python setup.py install
$ sudo pip install --upgrade setuptools

那么一切都会好起来的。

其他回答

在Windows上,使用python 3.7,这对我来说是有效的:

pip install --upgrade setuptools --user

——user在你的主目录下安装包,不需要管理员权限。

就我而言,我做到了:

pip install -U poetry

在我的例子中,我最初安装了2个python版本,后来我删除了旧的版本。在创建虚拟环境时

virtualenv venv

是指已卸载的python

什么对我有用

python3 -m virtualenv venv

当你试图使用pip时也是如此。

这种事也发生在我身上。我认为如果requirements.txt包含一个“分发”条目,而virtualenv使用setuptools,问题就会发生。Pip将尝试修补setuptools以为分发腾出空间,但不幸的是它会中途失败。

简单的解决方法是删除当前的virtualenv,然后使用——distribute参数创建一个新的virtualenv。

使用virtualenvwrapper的示例:

$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt

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用户。