簡體   English   中英

如何使用帶有Matlab系統功能的Python處理“沒有名為library_name的模塊”錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM