2012-10-03 29 views
3

我试图运行一个Python程序,它使用了MATLAB的pygame模块。我知道我可以使用在MATLAB中运行的Python程序无法导入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?

回答

1

因为我没有太频繁地使用matlab,现在没有可用的程序,所以我不能肯定地说,但matlab可能会创建一个自定义路径的定制环境(这发生了很多,所以用户在他们的软件中拥有非常一致的体验)。当matlab安装时,它可能不会将路径导出到它自己的模块到您的默认环境。所以当在matlab之外调用pygame.py时,python在其通常的查找路径下找不到pygame.py。

解决方案可能是:

  • 找到pygame.py,并直接在您的代码映射路径给它,虽然这可能会部署期间以后会让你头疼的

  • 尝试只复制pygame.py文件到您的工作目录,可能需要解决的依赖性。

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

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

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?

0

为子孙后代,首先尝试的Stewie注意到这里的一切("Undefined variable "py" or class" when trying to load Python from MATLAB R2014b?)。如果它不起作用,那么有可能你有多个蟒蛇。您可以尝试在您的bash /终端上检查哪些python可以工作(包括所有相关的已安装模块)。然后用

pyversion PYTHONPATH

让MATLAB知道正确的道路。 也可以使用py.importlib.import_module('yourmodule')在此之后导入模块。 这应该让你开始。