Python urllib3错误-ImportError:无法导入名称UnrevenuableBodyError
我将cronjob设置为在特定时间调用脚本(ex-24510*python3mayank/exp/test.py)。 当调用mytest.py时,我在test.py脚本中激活virtualenv,如下所示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和运行脚本所需的包)后,我尝试导入请求,它显示错误为:-
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/
干杯
奥利弗