我在用于我的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
答案 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/")