[英]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.