2012-10-03 89 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')在此之後導入模塊。 這應該讓你開始。