Django项目中views.py无法加载同目录.joblib文件报错
解决Django中views.py无法加载同目录.joblib文件的问题
你遇到的FileNotFoundError是因为Django运行runserver时的工作目录是项目根目录(即manage.py所在目录),而非views.py所在的应用目录,直接使用相对路径会找不到文件。以下是可行的解决方案:
方案一:通过当前文件路径构建模型文件的绝对路径
利用__file__获取views.py的绝对路径,再拼接模型文件名,确保无论工作目录是什么都能找到文件:
import os from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt import joblib @csrf_exempt def test(response): prediction_value = None # 初始化变量,避免GET请求时未定义报错 if response.method == 'POST': age = int(response.POST['age']) gender_str = str(response.POST['gender']) gender_value = 1 if gender_str == 'Male' else 0 openness = int(response.POST['openness']) neuroticism = int(response.POST['neuroticism']) conscientiousness = int(response.POST['conscientiousness']) agreeableness = int(response.POST['agreeableness']) extraversion = int(response.POST['extraversion']) personality_values_1 = [[gender_value, age, openness, neuroticism, conscientiousness, agreeableness, extraversion]] # 构建模型文件的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) model_path = os.path.join(current_dir, 'PersonalityTestLogisticRegression.joblib') theModel = joblib.load(model_path) prediction = theModel.predict(personality_values_1) prediction_value = prediction[0] return render(response, "main/Review_Test.html", {'prediction':prediction_value})
方案二:通过项目根目录构建路径
借助Django设置中的BASE_DIR(项目根目录),直接指定模型文件的位置(假设views.py在main应用下):
from django.conf import settings import os # 其他导入... @csrf_exempt def test(response): # 其他代码... model_path = os.path.join(settings.BASE_DIR, 'main', 'PersonalityTestLogisticRegression.joblib') theModel = joblib.load(model_path) # 其他代码...
额外检查点
- 确认模型文件名拼写完全一致(包括大小写、
.joblib后缀) - 确保
.joblib文件确实和views.py在同一目录下,没有放错位置 - 开发环境中确保文件有读取权限
内容的提问来源于stack exchange,提问作者Emith Dinsara
相关产品推荐
相关产品推荐

