我正在尝试运行一个Python程序,该程序使用MATLAB中的pygame
模块。我知道我可以使用
system('python program.py')
或只是
! python program.py
然而,我一直收到错误:
Traceback (most recent call last):
File "program.py", line 1, in <module>
import pygame
ImportError: No module named pygame
奇怪的是,如果我从命令行运行程序,它可以正常工作。有谁知道为什么如果在MATLAB中运行,Python找不到pygame?
答案 0 :(得分:2)
问题可能是MATLAB没有看到你的PYTHONPATH,它通常存储Python库和模块。对于自定义模块,PYTHONPATH还应包括自定义文件夹的路径。
您可以尝试在MATLAB运行会话中设置PYTHONPATH的值:
PATH_PYTHON = '<python_lib_folder>'
setenv('PYTHONPATH', PATH_PYTHON); % set env path (PYTHONPATH) for this session
system('python program.py');
另请参阅此处可能相关的SO答案:How can I call a Qtproject from matlab?
答案 1 :(得分:1)
因为我没有经常使用matlab并且现在没有可用的程序我无法肯定地说,但是matlab可能正在创建一个带有自定义路径的自定义环境(这种情况发生了很多,因此用户非常喜欢一致的软件经验)。当matlab安装时,它可能无法将路径导出到自己的模块到默认环境。所以当在matlab之外调用pygame.py时,python在其通常的查找路径下找不到pygame.py。
解决方案可能是:
找到pygame.py,并在您的代码中直接映射到它的路径,尽管这可能会在部署过程中引起您的麻烦
尝试将pygame.py文件复制到工作目录,可能需要解决这些问题。
直接从http://www.pygame.org的开发人员安装pygame。版本差异可能是一个问题,但pygame被放在python的常用查找路径下。 (这将是我个人的首选解决方案。)
或者只是将matlab库中pygame的路径位置导出到默认的enivronment。这也可能是部署期间的问题。
答案 2 :(得分:0)
对于后人,首先尝试Stewie在这里注意到的所有内容("Undefined variable "py" or class" when trying to load Python from MATLAB R2014b?)。如果它不起作用,那么你可能有多个蟒蛇。您可以尝试在bash / terminal上检查哪个python(包含所有相关的已安装模块)。然后使用
pyversion PYTHONPATH
让matlab知道正确的道路。 此外,还可以使用py.importlib.import_module(&#39; yourmodule&#39;)导入模块。 这应该让你开始。