Python urllib3错误-ImportError:无法导入名称UnrevenuableBodyError

Python urllib3错误-ImportError:无法导入名称UnrevenuableBodyError,python,python-3.x,python-2.7,python-requests,urllib3,Python,Python 3.x,Python 2.7,Python Requests,Urllib3,我将cronjob设置为在特定时间调用脚本(ex-24510*python3mayank/exp/test.py)。 当调用mytest.py时,我在test.py脚本中激活virtualenv,如下所示 activate = "/home/myserver/schedule_py3/bin/activate_this.py" exec(open(activate).read()) 激活虚拟环境(其中包含python3和运行脚本所需的包)后,我尝试导入请求,它显示错误为:-

我将cronjob设置为在特定时间调用脚本(ex-24510*python3mayank/exp/test.py)。 当调用mytest.py时,我在test.py脚本中激活virtualenv,如下所示

activate = "/home/myserver/schedule_py3/bin/activate_this.py"
exec(open(activate).read())
激活虚拟环境(其中包含python3和运行脚本所需的包)后,我尝试导入请求,它显示错误为:-

File "schedule_module/Schedule/notification_task.py", line 2, in <module>
    import requests
  File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python2.7/site-packages/urllib3/__init__.py", line 10, in <module>
    from .connectionpool import (
  File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 31, in <module>
    from .connection import (
  File "/usr/lib/python2.7/site-packages/urllib3/connection.py", line 45, in <module>
    from .util.ssl_ import (
  File "/usr/lib/python2.7/site-packages/urllib3/util/__init__.py", line 4, in <module>
    from .request import make_headers
  File "/usr/lib/python2.7/site-packages/urllib3/util/request.py", line 5, in <module>
    from ..exceptions import UnrewindableBodyError
ImportError: cannot import name UnrewindableBodyError
文件“schedule\u module/schedule/notification\u task.py”,第2行,在
导入请求
文件“/usr/lib/python2.7/site packages/requests/_init__.py”,第43行,在
导入urllib3
文件“/usr/lib/python2.7/site packages/urllib3/_init__.py”,第10行,在
from.connectionpool导入(
文件“/usr/lib/python2.7/site packages/urllib3/connectionpool.py”,第31行,在
从。连接导入(
文件“/usr/lib/python2.7/site packages/urllib3/connection.py”,第45行,在
从.util.ssl导入(
文件“/usr/lib/python2.7/site packages/urllib3/util/_init__.py”,第4行,在
from.request导入make_头
文件“/usr/lib/python2.7/site packages/urllib3/util/request.py”,第5行,在
from..异常导入UnrevenuableBodyError
ImportError:无法导入名称UnrevenuableBodyError
正如我所看到的,它正在占用python2.7。有人能告诉我哪里错了吗


注意-我已在虚拟环境中使用pip3安装了所有软件包。

您可能需要查看激活虚拟环境的方法

我们可以找到一个很好的例子

这方面的一个例子是:

ex- 2 4 5 10 * /home/myserver/schedule_py3/<PATH TO VIRTUALENV PYTHON> <FULL PATH TO SCRIPT>mayank/exp/test.py
ex-24510*/home/myserver/schedule_py3/mayank/exp/test.py

因为您使用的是系统python而不是virtualenv'ed。 首先从env文件夹中使用activate,然后使用python

2 4 5 10 * source /home/myserver/schedule_py3/bin/activate_this.py && python something_else.py
异常导入UnrevenuableBodyError导入错误:无法导入 名称不可恢复的BodyError

上述错误可能是由于“urllib3”包被破坏。卸载/安装将修复此问题:

sudo pip uninstall urllib3
sudo pip install --upgrade urllib3
另一个问题可能是,urllib3是通过pip安装的,请求是通过yumrepo安装的,反之亦然。在这种情况下,修复方法是完全删除这些库,然后通过相同的repo安装

我建议pip优于yum来安装这两个软件包,因为它易于维护并提供更多的控制。操作系统补丁或VM维护活动等所需的任何进一步的yum更新都不会影响通过pip安装的软件包

首先通过pip和yum删除所有安装的“urllib3”和“请求”:

sudo pip uninstall urllib3 -y
sudo pip uninstall requests -y
sudo yum remove python-urllib3 -y
sudo yum remove python-requests -y
现在仅通过pip安装这两个软件包:

sudo pip install --upgrade urllib3
sudo pip install --upgrade requests
要仅通过yum安装这两个软件包,请执行以下操作:

sudo yum install python-urllib3
sudo yum install python-requests

注意:当在操作系统级别进行yum更新时,请始终使用虚拟环境以避免冲突。

我遇到了一个稍微不同的错误:

cannot import name 'HTTPConnectionPool' from 'urllib3.connectionpool'
这是由b/c引起的,我的应用程序中有一个名为
queue.py
的文件

urllib3中的env/lib/python3.7/site packages/urllib3/packages/six.py正在尝试运行

import queue
但不是导入正确的queue.py,而是导入了我的queue.py


我将我的
queue.py
重命名为其他名称,这似乎解决了问题。

在我的服务器上,我们使用root权限安装了所有包,但在其他帐户中使用。我遇到了此类错误

解决方法是:

sudo chmod 755 -R /usr/lib/python2.7/site-packages/
干杯

奥利弗