You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次在Streamlit Cloud部署Python应用遇.pkl文件目录报错

问题根因

Python读取相对路径文件时,路径基准是执行启动命令时的工作目录,不是app.py脚本自身的存放目录。哪怕.pkl文件和app.py在同一个文件夹,只要启动脚本时的工作目录不在这个文件夹下,直接写文件名加载就会报文件不存在。

修复方案

不要直接写裸文件名加载pkl,先动态获取app.py自身所在的绝对目录,再拼接pkl文件名生成完整绝对路径,这种写法不受启动目录影响,任何场景下都能准确定位文件。
替换原有加载pkl的代码为如下写法,记得把代码里的xxx.pkl换成你实际的pkl文件名:

import os
import pickle

# 获取app.py所在文件夹的绝对路径
script_directory = os.path.dirname(os.path.abspath(__file__))
# 拼接生成pkl文件的完整路径
pkl_path = os.path.join(script_directory, "xxx.pkl")

# 加载pkl文件
with open(pkl_path, "rb") as f:
    model = pickle.load(f)
排查补充
  • 部署到Linux服务器时要注意文件名大小写:Windows系统不区分文件名大小写,Model.pkl和model.pkl会被识别为同一个文件,但Linux系统大小写敏感,文件名不匹配会直接报找不到,要确认代码里的文件名和实际文件名完全一致。
  • 用Docker、Gunicorn、uWSGI等工具部署时,检查配置中的工作目录(WORKDIR)设置,避免工作目录和脚本存放目录层级错配。
  • 定位路径问题时,可以临时在加载pkl的代码前加print(os.getcwd()),启动后看输出日志就能知道程序默认的文件查找路径,快速确认路径偏差。

内容的提问来源于stack exchange,提问作者Eptehal Nashnoush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:01:52