首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImportError:需要“packaging.requirements”包

ImportError:需要“packaging.requirements”包
EN

Stack Overflow用户
提问于 2019-08-18 10:46:55
回答 2查看 4.6K关注 0票数 5

我使用ubuntu运行VPS:

代码语言:javascript
复制
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

我试图将Python从2.7.6升级到2.7.16。

就在升级后,Gunicorn库没有从

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/user/bin/python-2.7/bin/gunicorn", line 7, in <module>
    from gunicorn.app.wsgiapp import run
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 9, in <module>
    from gunicorn.app.base import Application
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/app/base.py", line 12, in <module>
    from gunicorn import util
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/util.py", line 12, in <module>
    import pkg_resources
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/pkg_resources/__init__.py", line 82, in <module>
    __import__('pkg_resources.extern.packaging.requirements')
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/pkg_resources/extern/__init__.py", line 61, in load_module
    "distribution.".format(**locals())
ImportError: The 'packaging.requirements' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.

我被告知这可能是一些setuptools的问题,所以我用

代码语言:javascript
复制
python -m ensurepip
Looking in links: /tmp/tmp98U8zf
Requirement already satisfied: setuptools in ./bin/python-2.7/lib/python2.7/site-packages (41.1.0)
Requirement already satisfied: pip in ./bin/python-2.7/lib/python2.7/site-packages (19.2.2)

(无变动)

我试着做

代码语言:javascript
复制
pip install packaging

(无变动)

或将setuptools降级至19.2 (如Python2.7‘package’包是必需的;通常这与这个包捆绑在一起中所建议)

并得到了

代码语言:javascript
复制
  File "/home/user/bin/python-2.7/lib/python2.7/site-packages/gunicorn/config.py", line 8, in <module>
    import copy
  File "/home/user/bin/python-2.7/lib/python2.7/copy.py", line 52, in <module>
    import weakref
  File "/home/user/bin/python-2.7/lib/python2.7/weakref.py", line 14, in <module>
    from _weakref import (
ImportError: cannot import name _remove_dead_weakref

在我的例子中,有什么工作方法可以升级到2.7.16 python吗?

UPD

我用它升级了python

代码语言:javascript
复制
wget https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz
make clean && ./configure --enable-unicode=ucs4 --enable-shared --prefix=/home/user/bin/python-2.7/ --with-ensurepip=install && make && make install
pip install -r ~/django/django_projects/requirements.txt

pip冻结:https://www.pastiebin.com/5d592ea701503

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-09-11 09:05:22

场景

First:在尝试执行脚本时,将出现以下错误消息:

代码语言:javascript
复制
ImportError: The 'packaging.requirements' package is required; normally this is bundled with this package so if you get this warning, consult the packager of your distribution.

第二步:当尝试使用pip show setuptools检查setuptools版本时(或使用任何其他pip命令),将出现下一个错误消息:

代码语言:javascript
复制
ImportError: cannot import name _remove_dead_weakref

原因

这是因为当前的Python安装在某种程度上搞砸了。在我的例子中,混乱是由从Ubuntu 16.04升级到Ubuntu 18.04造成的。

解决方案

虚拟环境

在最好的情况下,您已经在使用虚拟环境(这就是我的情况)。这里的解决方案是重新创建/重新设置您的venv (分步):

代码语言:javascript
复制
$ cd /path/to/your/venv

# remove your old venv
$ rm -rf ./*

# create a new one
$ /usr/bin/virtualenv . --python=YOUR-PYTHON-VERSION

# activate venv
$ source bin/activate

# verify the correct python version is installed
$ python --version

例如,将YOUR-PYTHON-VERSION替换为python2.7python3.7

在重新创建你的静脉后,问题应该是解决的,你应该能够再次使用pip。

无虚拟环境

我认为解决这个问题的最好方法是完全卸载所有非默认的Python版本(例如,Ubuntu 18.04附带了Python 3.6+),然后对所有其他所需的Python版本进行彻底的重新安装。

票数 3
EN

Stack Overflow用户

发布于 2019-08-26 22:39:13

尝试通过键入以下内容来升级pip:

代码语言:javascript
复制
pip install --upgrade pip
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57543808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档