May*_*edi 12 python urllib3 python-2.7 python-3.x python-requests
我设置我的 cronjob 在特定时间调用我的脚本(ex- 2 4 5 10 * python3 mayank/exp/test.py)。当我的test.py被调用时,我将在我的 test.py 脚本中激活 virtualenv,如下所示。
activate = "/home/myserver/schedule_py3/bin/activate_this.py"
exec(open(activate).read())
Run Code Online (Sandbox Code Playgroud)
激活虚拟环境(其中包含 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
Run Code Online (Sandbox Code Playgroud)
正如我所看到的,它正在使用 python2.7。谁能告诉我我错在哪里?
注意- 我已经在我的虚拟环境中使用 pip3 安装了所有软件包。
Lal*_*r B 20
异常导入 UnrewindableBodyError 导入错误:无法导入名称 UnrewindableBodyError
上面的错误很可能是由于“ urllib3 ”包被破坏了。卸载/安装将解决问题:
sudo pip uninstall urllib3
sudo pip install --upgrade urllib3
Run Code Online (Sandbox Code Playgroud)
另一个问题可能是,urllib3通过pip安装,请求通过yum repo安装,反之亦然。在这种情况下,修复方法是完全删除这些库并通过相同的 repo 安装它。
我推荐 pip over yum 来安装这两个软件包,因为它易于维护并提供更多控制。操作系统修补或 VM 维护活动等所需的任何进一步 yum 更新都不会影响通过 pip 安装的软件包。
首先通过 pip 和 yum删除“ urllib3 ”和“ requests ”的所有安装:
sudo pip uninstall urllib3 -y
sudo pip uninstall requests -y
sudo yum remove python-urllib3 -y
sudo yum remove python-requests -y
Run Code Online (Sandbox Code Playgroud)
现在仅通过 pip 安装这两个软件包:
sudo pip install --upgrade urllib3
sudo pip install --upgrade requests
Run Code Online (Sandbox Code Playgroud)
仅通过 yum 安装这两个软件包:
sudo yum install python-urllib3
sudo yum install python-requests
Run Code Online (Sandbox Code Playgroud)
注意:在操作系统级别发生 yum 更新时,始终使用虚拟环境以避免冲突。
您可能想看看激活虚拟环境的方法。
可以在这里找到一个很好的例子
一个例子是:
ex- 2 4 5 10 * /home/myserver/schedule_py3/<PATH TO VIRTUALENV PYTHON> <FULL PATH TO SCRIPT>mayank/exp/test.py
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16232 次 |
| 最近记录: |