我在Django框架中有chatbotweb应用程序。到目前为止,一切正常,但是现在,我想使用ajax运行chatbot python脚本,并从Javascript文件中调用它的视图。我有一个API,使用REST和python脚本的视图和ajax来调用该视图。在
在视图.py公司名称:
from chat.chatbot1 import main_chatbot
def run_python_script(request):
os.system('python3 main_chatbot.py')
return HttpResponse("OK")
在索引.js公司名称:
^{pr2}$python脚本文件夹位于chatbot-django项目内的聊天应用程序中。在
问题是视图找不到文件,并出现以下错误:
python3: can't open file 'main_chatbot.py': [Errno 2] No such file or directory
您的Django应用程序可能将工作目录作为管理.py文件,所以它希望python脚本位于同一目录中。在
使用脚本的完整路径,或相对于管理.py是。在
所以可能是这样的:
或者
^{pr2}$(建议导入脚本的答案可能是更好的方法,除非有特定的需要将其作为单独的进程运行)。在
您应该给出
main_chatbot.py
的完整路径。在最好的方法是使用pkg_resources.resource_filename,如下所示:
其中chat是包含脚本的包的名称。在
要运行脚本,最好使用与项目可执行文件(virtualenv)相同的Python可执行文件。在
这样做,您可以使用sys.executable来获取virtualenv使用的Python路径:
^{pr2}$最佳做法是将
os.system
替换为subprocess.check_call,如下所示:见Replacing Older Functions with the subprocess Module
如果在同一文件夹中,则应导入:
示例if与视图.py在
然后调用你想要的函数。。。 您也可以将完整路径放入操作系统但似乎不太好。。。在
相关问题 更多 >
编程相关推荐