我如何处理没有名为library_name'的模块?使用Python和Matlab的系统函数出错?

时间:2016-12-01 18:18:34

标签: python matlab

当我尝试使用系统命令在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问题,但我找不到与我的问题密切相关的任何内容。

2 个答案:

答案 0 :(得分:2)

使用默认设置安装Anaconda时,它会自动将Anaconda二进制文件添加到$PATH变量中。如果您选择不这样做,可以通过将以下行添加到.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路径相同,方法是将以下行添加到.bash_profile

launchctl setenv PATH $PATH

这会更改所有程序的路径设置,这可能是不合需要的。因此,在脚本开头使用path函数将Anaconda二进制文件添加到MATLAB中的路径可能是最简单和最安全的:

path('Users/JackStClaire/anaconda/bin/', path)

将其添加到$PATH变量的开头,以确保它使用的是Anaconda python,而不是系统python

答案 1 :(得分:-1)

在Matlab脚本中,您可以简单地设置Python用于与其库通信的环境,以确保它是正确的

PATH_PYTHON = '/Users/matteofabris/anaconda2/lib/python2.7/site-packages/';
setenv('PYTHONPATH', PATH_PYTHON);