Python 3.x 找不到导入的模块?

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

我正在构建一个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 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描述得很好;如果答案有帮助的话,别忘了投赞成票。