Python 包在命令行上运行,但在脚本中找不到

Python 包在命令行上运行,但在脚本中找不到

基本上从标题和下图可以看出,我已经安装了pyserial,它可以在 Python 终端中运行,但不能在脚本中运行。

我已经完成pip3 install pyserial,并且也尝试了pip install pyserialpython3 -m pip install pyserial,结果显示我已经安装了该包。

当我使用 时python3,进入 Python 终端,然后输入,import serial没有错误。当我使用 脚本import pyserial并使用 运行它时python3 ./serial_test.py,会出现错误。

为什么其中一个会抛出错误,而另一个却不会?我该如何修复这个问题?

这是我的终端的屏幕截图:

我的终端图片

我的 python 脚本(无论脚本是否使用该serial库)都会引发错误:

python 脚本

编辑1:我忘了提一件事,那就是当我pip3 --version这样做时会显示:

pip 22.0.3 from /usr/local/lib/python3.8/dist-packages/pip (python 3.8)

代替:

/usr/lib/python3...

作为此处列出,尽管这仍然不能解释终端内代码的差异。

也许解决方案是使用pipfor 来安装它/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$PATHpythonpip

您可能已经serial在用户pip路径中安装了该模块,但它可能不存在于根用户的pip路径中,这就是您遇到问题的原因!

相关内容