![](/img/trans.png)
[英]How do i fix the following Python error: no module named Playback?
[英]How do I deal with 'no module named library_name' error using Python with Matlab's system function?
當我嘗試使用system命令在Matlab中運行Python腳本時,它會一直有效,直到我導入基本Python所沒有的東西。
例如,如果我有一個腳本test_1.py:
import math as m
print 'good to go'
print m.exp(7)
然后運行Matlab命令:
>>> system('python test_1.py')
我回來
good to go
1096.63315843
ans =
0
這就是我想要的。 但是如果我將test_1.py修改為
import math as m
import pandas as pd
print 'good to go'
print m.exp(7)
並運行
>>> system('python test_1.py')
我得到:
>> system('python test_1.py')
Traceback (most recent call last):
File "test_1.py", line 1, in <module>
import pandas as pd
ImportError: No module named pandas
ans =
1
當我在Bash終端中運行它們時,這兩個腳本都可以正常運行,而且問題似乎並不特定於Pandas庫。
我檢查了Matlab的文檔和其他一些StackOverflow問題,但找不到與我的問題密切相關的任何內容。
使用默認設置安裝Anaconda時,它將自動將Anaconda二進制文件添加到$PATH
變量中。 如果選擇不這樣做,則可以通過.bashrc
下行添加到.bashrc
文件(在Mac上為.bash_profile
文件)中來手動添加:
export PATH="/home/username/anaconda/bin:$PATH"
現在,就您而言,這已經發生(無論哪種方式),因此Anaconda確實可以在bash shell中工作。 但是,在Mac OS X上,有兩個不同的$PATH
變量:bash路徑和launchctl
路徑。 如果您打開終端或從終端運行程序,則使用bash路徑。 當您以“ launchctl
命令“正常方式”運行程序時,將使用launchctl
路徑。 現在,您的bash路徑是正確的,但您的launchctl
路徑卻不正確-這就是為什么它可以在終端中使用的原因,而不能在MATLAB中使用。
您可以通過launchctl
添加到.bash_profile
,來將launchctl
路徑設置為與bash路徑相同:
launchctl setenv PATH $PATH
這將更改所有程序的路徑設置,這可能是不希望的。 因此,在腳本開始時,使用path
函數從MATLAB中將Anaconda二進制文件添加到路徑中可能是最簡單,最安全的:
path('Users/JackStClaire/anaconda/bin/', path)
通過將其添加到$PATH
變量的開頭,可以確保它使用Anaconda python
而不是system python
。
在Matlab腳本中,您可以簡單地設置Python用於與其庫進行通信的環境,以確保它是正確的環境。
PATH_PYTHON = '/Users/matteofabris/anaconda2/lib/python2.7/site-packages/';
setenv('PYTHONPATH', PATH_PYTHON);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.