基本上从标题和下图可以看出,我已经安装了pyserial
,它可以在 Python 终端中运行,但不能在脚本中运行。
我已经完成pip3 install pyserial
,并且也尝试了pip install pyserial
和python3 -m pip install pyserial
,结果显示我已经安装了该包。
当我使用 时python3
,进入 Python 终端,然后输入,import serial
没有错误。当我使用 脚本import pyserial
并使用 运行它时python3 ./serial_test.py
,会出现错误。
为什么其中一个会抛出错误,而另一个却不会?我该如何修复这个问题?
这是我的终端的屏幕截图:
我的 python 脚本(无论脚本是否使用该serial
库)都会引发错误:
编辑1:我忘了提一件事,那就是当我pip3 --version
这样做时会显示:
pip 22.0.3 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)
代替:
/usr/lib/python3...
作为此处列出,尽管这仍然不能解释终端内代码的差异。
也许解决方案是使用pip
for 来安装它/usr/lib/python3
,但我不确定如何做到这一点。
编辑2:当我进一步研究这个问题时,我会更新我的发现。当我这样做时whereis python3
,我得到:
python3: /usr/bin/python3 /usr/bin/python3.8 /usr/bin/python3.8-config /usr/lib/python3 /usr/lib/python3.8 /usr/lib/python3.9 /etc/python3 /etc/python3.8 /usr/local/lib/python3.8 /usr/include/python3.8 /usr/share/python3 /usr/share/man/man1/python3.1.gz
我不确定程序在命令行上是如何工作的,所以我不确定为什么有多个地方python3
,但也许它可以解释这个问题。
编辑3: which python3
显示:
/usr/bin/python3
并which pip3
显示:
/usr/local/bin/pip3
答案1
选项 A:
您可以尝试运行:
/usr/local/bin/pip3 install serial
进而:
/usr/bin/python3 serial_test.py
并检查您是否仍面临同样的问题。如果是,请尝试选项 B。
选项 B:
您可以尝试通过以下方式创建虚拟环境:
virtualenv -p python3 venv
或者:
python3-venv
并尝试执行该程序。
笔记
您在正常模式下使用 Python 3 作为用户,而在启动脚本时使用 root 用户,如您上传的图像所示。使用 Python 3 作为将以root 用户身份sudo
启动,并且和 的可能不一样。python
$PATH
python
pip
您可能已经serial
在用户pip
路径中安装了该模块,但它可能不存在于根用户的pip
路径中,这就是您遇到问题的原因!