【问题标题】:Matlab script not found from django views.py从 django views.py 中找不到 Matlab 脚本
【发布时间】:2016-02-11 04:13:06
【问题描述】:

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

【问题讨论】:

    标签: python django matlab python-2.7 pydev


    【解决方案1】:

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

    eng.addpath(r'C:\path\to\my\scripts\')
    

    在初始化和启动引擎之后。

    【讨论】:

    • 调用eng.savepath() 可能只设置一次。
    【解决方案2】:

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

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

    【讨论】:

    • 虽然您提供的那行代码并没有解决问题,但感谢您解释WSGI服务器定义了不同的目录并为我指明了正确的方向,非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 2021-06-06
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多