3

我正在尝试pygame从 MATLAB 运行一个使用模块的 Python 程序。我知道我可以使用

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?

4

3 回答 3

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 答案:如何从 matlab 调用 Qtproject?

于 2012-10-03T17:44:44.197 回答
1

由于我没有经常使用 matlab 并且现在没有可用的程序我不能肯定地说,但是 matlab 可能正在使用自定义路径创建自定义环境(这种情况经常发生,因此用户在他们的软件)。安装 matlab 时,它可能不会将其自身模块的路径导出到您的默认环境。因此,当在 matlab 之外调用 pygame.py 时,python 在其通常的查找路径下找不到 pygame.py。

解决方案可能是:

  • 找到 pygame.py,并直接在您的代码中映射到它的路径,尽管这可能会导致您稍后在部署过程中感到头疼

  • 尝试将 pygame.py 文件复制到您的工作目录,可能会有需要解决的依赖关系。

  • 直接从http://www.pygame.org的开发者处安装 pygame 。版本差异可能是一个问题,但 pygame 被放在 python 的通常查找路径下。(这将是我个人的首选解决方案。)

  • 或者只是将matlab库中pygame的路径位置导出到您的默认环境。这也可能是部署期间的问题。

于 2012-10-03T17:41:29.957 回答
0

对于后代,首先尝试 Stewie 在此处指出的所有内容(“尝试从 MATLAB R2014b 加载 Python 时“未定义的变量“py”或类”?)。如果它不起作用,那么您可能有多个蟒蛇。您可以尝试在您的 bash/终端上检查哪个 python 工作(以及所有相关的已安装模块)。然后使用

pyversion PYTHONPATH

让matlab知道正确的路径。之后还使用 py.importlib.import_module('yourmodule') 导入模块。那应该让你开始。

于 2016-09-04T03:37:28.517 回答