从django views.py中找不到matlab脚本

时间:2016-02-11 04:13:06

标签: python django matlab python-2.7 pydev

我在用于我的views.py页面的目录中有一个用户自制的Matlab脚本,但是当它被调用时,我收到错误:Undefined function 'getRecs' for input arguments of type 'double'.基本上找不到脚本。

当我在同一目录中使用test.py脚本测试脚本时,一切正常,但是当通过浏览器和开发服务器通过views.py调用时,会出现错误。

tools.py:

def get_recs(passed_list):
   eng = matlab.engine.start_matlab()
   recs = eng.getRecs(passed_list)
   return recs

test.py: (工作正常,与views.py和getRecs.m位于同一目录中) (使用Pydev的运行:Python运行)

from tools import *

test_ratings = [5, 0, 3, 2, 1, 5]
conv_rates = matlab.double(initializer=test_ratings)
new_recs = get_recs(conv_rates)
print_list(new_recs)

views.py:(抛出错误)

from tool import *
test_ratings = [5, 0, 3, 2, 1, 5]
def new_user(request):
    conv_rates = matlab.double(initializer=test_ratings)
    new_recs = get_recs(conv_rates)
    return render_to_response('new_user.html', { 'ratings_list' :new_recs}, context_instance=RequestContext(request)) 

我正在使用Python 2.7,Django 1.9和Matlab R2015b

2 个答案:

答案 0 :(得分:2)

对于将来遇到此问题的任何人:像Selcuk提到的那样,开发服务器定义了自己的目录,因此您需要添加要用于引擎的脚本的路径。我是通过添加

来做到这一点的
eng.addpath(r'C:\path\to\my\scripts\')

初始化并启动发动机后。

答案 1 :(得分:1)

Django开发服务器(或WSGI服务器)定义了与用户脚本所在的默认目录不同的默认目录。尝试使用addpath选项将用户脚本的位置添加到搜索路径:

eng = matlab.engine.start_matlab("-addpath /var/django/myproject/myapp/")