尝试导入 python 个模块 returns ModuleNotFound 错误

Trying to import python modules returns ModuleNotFound Error

我试图在 webots 中使用 numpy 模块,但无论我尝试什么,我总是得到

INFO: assignment_2_controller_2: Starting controller: python3.6 -u "assignment_2_controller_2.py" 
[assignment_2_controller_2] Traceback (most recent call last):
[assignment_2_controller_2]   File "assignment_2_controller_2.py", line 4, in <module>
[assignment_2_controller_2]     import numpy
[assignment_2_controller_2] ModuleNotFoundError: No module named 'numpy'
WARNING: 'assignment_2_controller_2' controller exited with status: 1.

我已经安装了带有 pip2 和 pip3 的 numpy,两者似乎都没有任何区别,包显示在 ~/.local/lib/python3.6/site-packages 中。我还可以确认此模块在 python 编辑器和其他 python 文件中有效。 我是否需要在 webots python Makefile 或我的环境变量中进行更改?

编辑: 打印 sys.path 显示

'/snap/webots/14/usr/share/webots/lib/controller/python36', '/snap/webots/14/usr/lib/python36.zip', '/snap/webots/14/usr/lib/python3.6', '/snap/webots/14/usr/lib/python3.6/lib-dynload', '/snap/webots/14/usr/lib/python3/dist-packages'

我使用 snap 安装了 webots,但为什么它不使用 PATH 环境变量指定的 python?

修复: 从外观上看,snap 通过设计为网络机器人创建了一个包含的文件系统 运行,并在其中安装了自己的 python 二进制文件。因此,我使用 snap 卸载了 webots,然后从他们网站上的 .deb 文件安装,现在它工作正常。

从 Snap 包安装的 Webots 运行 在一种沙盒中,因此它使用随 snap 包分发的 Python 版本(您无法更改)。

如文档中所述,您可以使用外部控制器自行启动控制器,而不是让 Webots 启动它。这样您就可以选择要使用的 Python 版本:https://cyberbotics.com/doc/guide/installation-procedure#installing-the-snap-package

或者,您可以使用不同的方式安装 Webots(从 Debian 或归档包)。其他安装未随 Python 一起提供,而是使用系统 Python.