我目前正在尝试开发一个课程项目,并且我正在使用 python 文件通过 API 收集数据。
今天早上我尝试运行代码时,从 bash 脚本执行文件时遇到了 ModuleNotFoundError:
然后为了看看它是否只是在 VSCode(我正在使用的)中,我进入终端并启动 python3 并尝试导入模块:
trevormoy@158 Edstem-Tracker % python3
Python 3.12.3 (main, Apr 9 2024, 08:09:14) [Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import edapi
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'edapi'
>>> exit()
因此,尝试在这两种情况下运行它都会导致错误。
注意:我已经运行了 pip3 list 并且我已经确认该模块在那里。
我继续尝试其他外部 python 模块,结果遇到了相同的错误。
在 VSCode 中,我决定使用
Run Python File
命令运行代码:
当我运行此代码时,代码运行完全正常,但现在我试图理解为什么我的 python3 无法找到我的模块。
当我第一次尝试解决问题时,我尝试卸载并重新安装最初遇到问题的模块。在意识到我的所有模块都无法工作后,我转向其他类型的修复。
我调整了脚本以使其运行:
/usr/bin/python3 "edstem/integration/get_data.py"
这实际上在 bash 脚本中正确运行了我的代码,没有错误。唯一的问题是我需要考虑可能使用该项目的 Windows 用户,因此使用
/usr/bin/python3
不起作用。
因为
/usr/bin/python3
工作,我决定查看我的 bash 配置文件,它似乎工作正常。看了那里之后,我决定回应我的$PATH
,但不确定我是否在寻找正确的东西。我看到 Python/3.9/bin
在我的 $PATH
中出现了两次,但我不知道这在这种情况下是否重要。
尝试使用虚拟环境。这会将其与系统的其余部分隔离。要创建一个并确保它在 Windows 上运行,请执行以下操作:
py -m venv .venv
.venv\Scripts\activate
where python
适用于 Mac/Unix
python3 -m venv .venv
source .venv/bin/activate
which python
.venv/bin/python
要退出 venv,请使用
deactivate
。
进入后,安装软件包,它们应该可以工作。