[英]How can I use a requests module within virtual environment?
我目前正在为我的投资组合做一个项目,最近遇到了一个我无法克服的障碍。 我正在为我的项目使用虚拟环境。 我在该虚拟环境中安装了requests
模块,并在尝试导入该模块时遇到以下异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/requests/__init__.py", line 43, in <module>
import urllib3
File "/usr/lib/python3/dist-packages/urllib3/__init__.py", line 8, in <module>
from .connectionpool import (
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 29, in <module>
from .connection import (
File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 39, in <module>
from .util.ssl_ import (
File "/usr/lib/python3/dist-packages/urllib3/util/__init__.py", line 3, in <module>
from .connection import is_connection_dropped
File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 3, in <module>
from .wait import wait_for_read
File "/usr/lib/python3/dist-packages/urllib3/util/wait.py", line 1, in <module>
from .selectors import (
File "/usr/lib/python3/dist-packages/urllib3/util/selectors.py", line 14, in <module>
from collections import namedtuple, Mapping
ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
我发现这个异常的原因是旧版本的urllib3
模块正在从collections
模块导入Mapping
对象,尽管Mapping
对象当前位于collections.abc
模块中。 但这并不能解决我的问题,因为在我的虚拟环境中,我有更新的urllib3
模块。
$ pip list
Package Version
------------------ -----------
asgiref 3.5.2
certifi 2022.5.18.1
charset-normalizer 2.0.12
decouple 0.0.7
Django 4.0.4
idna 3.3
pip 22.1.1
requests 2.27.1
setuptools 58.1.0
sqlparse 0.4.2
urllib3 1.26.9
不知何故,python 正在使用全局包,而不是虚拟环境中的包。 试图找出这种行为的原因,我发现当虚拟环境处于活动状态时,属性sys.prefix
和sys.exec_prefix
应该指向虚拟环境的基本目录。 但在我的情况下,这些属性指向/usr
。
$ python3.10
Python 3.10.4 (main, Apr 9 2022, 21:27:52) [GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.prefix
'/usr'
>>> sys.exec_prefix
'/usr'
我不明白为什么会这样,我该如何克服。 如果有人经历过这种行为,请给我一个提示,我应该往哪个方向走。
编辑:
我启动python的步骤:
python3.10 -m venv venv/
source venv/bin/activate
pip install requests
python3.10
(venv) mikhail@HP:~/Projects/Github/python/socialize$ which python
/home/mikhail/Projects/Github/python/socialize/venv/bin/python
(venv) mikhail@HP:~/Projects/Github/python/socialize$ which python3.10
/home/mikhail/Projects/Github/python/socialize/venv/bin/python3.10
(venv) mikhail@HP:~/Projects/Github/python/socialize$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.