Python 3.x 找不到导入的模块?
我正在构建一个web scraper,我正在尝试导入“requests”包,但我遇到了一个错误。我被告知如下: ModuleNotFoundError:没有名为“requests”的模块 完全错误:Python 3.x 找不到导入的模块?,python-3.x,pip,python-venv,Python 3.x,Pip,Python Venv,我正在构建一个web scraper,我正在尝试导入“requests”包,但我遇到了一个错误。我被告知如下: ModuleNotFoundError:没有名为“requests”的模块 完全错误: (venv) USERs-MacBook-Pro:Scraper user$ /usr/local/opt/python@3.9/bin/python3.9 /Users/user/git/ML/Python/Practice/Scraper/Scraper.py Traceback (most r
(venv) USERs-MacBook-Pro:Scraper user$ /usr/local/opt/python@3.9/bin/python3.9 /Users/user/git/ML/Python/Practice/Scraper/Scraper.py
Traceback (most recent call last):
File "/Users/user/git/ML/Python/Practice/Scraper/Scraper.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
通过使用系统Python的绝对路径,如下所示:
/usr/local/opt/python@3.9/bin/python3.9 /Users/user/git/ML/Python/Practice/Scraper/Scraper.py
您正在使用系统的Python3.9以及为该系统安装的软件包,尽管您处于虚拟环境中
创建虚拟环境时,您正在使用指定的python版本创建一个单独的环境,并且使用pip安装的所有软件包都安装到此环境和此python版本
您可以更好地理解,如果您运行:
which python
在您的虚拟环境中
这将向您展示在venv中运行python
时使用的python,它将与
/usr/local/opt/python@3.9/bin/python3.9
因此,通过在您的环境中使用pip
安装requests
,它被安装在python环境中,当您只运行python
时就会执行python环境
总之,要将安装在venv中的软件包与pip
一起使用,您应该(在激活venv后)通过以下方式运行脚本:
通过使用系统Python的绝对路径,如下所示:
/usr/local/opt/python@3.9/bin/python3.9 /Users/user/git/ML/Python/Practice/Scraper/Scraper.py
您正在使用系统的Python3.9以及为该系统安装的软件包,尽管您处于虚拟环境中
创建虚拟环境时,您正在使用指定的python版本创建一个单独的环境,并且使用pip安装的所有软件包都安装到此环境和此python版本
您可以更好地理解,如果您运行:
which python
在您的虚拟环境中
这将向您展示在venv中运行python
时使用的python,它将与
/usr/local/opt/python@3.9/bin/python3.9
因此,通过在您的环境中使用pip
安装requests
,它被安装在python环境中,当您只运行python
时就会执行python环境
总之,要将安装在venv中的软件包与pip
一起使用,您应该(在激活venv后)通过以下方式运行脚本:
我猜
pip
与python3.9
没有链接。您能否尝试运行pip--version
并粘贴输出?您似乎正在运行系统python3,而不是venv python3。是的,但您使用的是系统python3.9的绝对路径。尝试使用python文件名执行它,如果venv的默认python文件名是3.9或python3.9文件名
,那么要使用的venv的正确可执行文件将是project\u name/venv/bin/python3
,您将使用系统文件名,难怪导入无法解析。激活venv后,只需运行python/Users/user/git/ML/python/Practice/Scraper/Scraper.py
,shell将使用正确的可执行文件。因为激活脚本的来源会改变当前的shell环境。特别是PATH
env变量,因此在运行python
命令时,来自虚拟env的可执行文件将优先于任何其他文件。我猜@itroulli描述得很好;如果答案有帮助,别忘了投票。我想pip
与python3.9
没有关联。您能否尝试运行pip--version
并粘贴输出?您似乎正在运行系统python3,而不是venv python3。是的,但您使用的是系统python3.9的绝对路径。尝试使用python文件名执行它,如果venv的默认python文件名是3.9或python3.9文件名
,那么要使用的venv的正确可执行文件将是project\u name/venv/bin/python3
,您将使用系统文件名,难怪导入无法解析。激活venv后,只需运行python/Users/user/git/ML/python/Practice/Scraper/Scraper.py
,shell将使用正确的可执行文件。因为激活脚本的来源会改变当前的shell环境。特别是PATH
env变量,因此在运行python
命令时,来自虚拟env的可执行文件将优先于任何其他文件。我猜@itroulli描述得很好;如果答案有帮助的话,别忘了投赞成票。