未从 Django views.py 中找到 Matlab 脚本

Matlab script not found from django views.py

我在 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

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

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

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

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

初始化并启动引擎后。