我试图在我的机器学习API上加载一个pickle文件,但我不断收到路径错误。
model = pickle.load(open(scaler_filepath, 'rb'))
但由于某种原因,我得到了一个错误,即找不到文件:FileNotFoundError:[Erno 2]没有这样的文件或目录:'..\\\\型号\\lr_scaler.pkl'
这就是我加载pickle文件的方式:
model_path = os.path.join(os.path.pardir,os.path.pardir,'models')
scaler_filepath = os.path.join(model_path, 'lr_scaler.pkl')
model_filepath = os.path.join(model_path, 'lr_model.pkl')
scaler = pickle.load(open(scaler_filepath, 'rb'))
model = pickle.load(open(model_filepath, 'rb'))
这给了我FileNotFoundError。将路径设置为原始字符串也不起作用,但重要的是,如果我打印以检查路径:
print(model_filepath)
print(os.path.getsize(scaler_filepath))
它返回正确的路径和文件大小:
。。\型号\lr_model.pkl
1227
所以看起来路径是正确的,但由于某种原因,当我在pickle.load((中打开它们时,它们不起作用
甚至使用原始字符串
scaler = pickle.load(open(r'....modelslr_scaler.pkl', 'rb'))
model = pickle.load(open(r'....modelslr_model.pkl', 'rb'))
我仍然得到:[Erno 2]没有这样的文件或目录:'..\\\\型号\\lr_scaler.pkl'
将\切换到/也不起作用。不知道还能做什么:(
编辑:如果我用print(os.path.exists(model_filepath))
检查路径,就会发生这种情况:
True
True
* Serving Flask app "machine_learning_api" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
False
False
我得到了FileNotFoundError
用测试
print(os.getcwd())
print(os.path.exists(model_filepath))
print(os.path.exists(scaler_filepath))
并且发现工作目录正在被改变,因此当API重新启动时它打破了相对路径。
C:pythonprojectsml-modelsrcmodels
True
True
* Serving Flask app "machine_learning_api" (lazy loading)
* Environment: development
* Debug mode: on
* Restarting with stat
C:pythonprojectsml-model
False
False
在ml-model文件夹中保存API脚本并设置
model_path = os.path.join(os.getcwd(),'models')
修复它。