繁体   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