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

如何用Python读取同一GitHub仓库文件?解决FileNotFoundError问题

解决Streamlit应用加载GitHub仓库内.pkl文件的FileNotFoundError问题

问题描述

在'SpecLines_App'中尝试加载同一GitHub仓库中的'classifier_model.pkl'文件时,持续出现FileNotFoundError。尝试过的代码如下:

import streamlit as st
import numpy as np
import pickle
import pandas as pd

#https://github.com/mblk3/MLM_Atomic_Spec_Lines/blob/02f6a04db06b459169ea0d19c347146ea1ad17d8/classifier_model.pkl
#joblibFile = open('code_/classifier_model.pkl', 'rb')
#joblibFile = open(url, 'rb')
#model = pickle.load(joblibFile)

model = pd.read_pickle(r'classifier_model.pkl')

原因分析

  1. 路径错误:本地开发环境和Streamlit部署环境的工作目录可能不一致,直接使用文件名或错误的相对路径会导致文件查找失败。
  2. 链接类型错误:GitHub网页链接仅用于展示文件内容,无法直接通过open()或pd.read_pickle()读取,需要使用文件的原始下载链接。

解决方案

方案1:修正文件相对路径

  1. 先排查当前工作目录,添加代码确认:
    import os
    st.write("当前工作目录:", os.getcwd())
    
  2. 根据输出的工作目录调整路径:
    • 若Streamlit应用文件在SpecLines_App文件夹,模型文件在仓库根目录,路径应为../classifier_model.pkl
    • 若两者在同一目录,直接使用classifier_model.pkl即可

方案2:使用GitHub原始链接加载文件

打开GitHub上的模型文件页面,点击右上角的「Raw」按钮获取原始链接,然后通过网络加载:

import pandas as pd

# 替换为文件的原始链接
model_url = "https://raw.githubusercontent.com/mblk3/MLM_Atomic_Spec_Lines/02f6a04db06b459169ea0d19c347146ea1ad17d8/classifier_model.pkl"
model = pd.read_pickle(model_url)

也可使用pickle配合requests加载:

import requests
from io import BytesIO
import pickle

model_url = "https://raw.githubusercontent.com/mblk3/MLM_Atomic_Spec_Lines/02f6a04db06b459169ea0d19c347146ea1ad17d8/classifier_model.pkl"
response = requests.get(model_url)
model = pickle.load(BytesIO(response.content))

方案3:确保文件被正确部署

  • 检查仓库的.gitignore文件,确认classifier_model.pkl未被排除
  • 确认文件存在于GitHub仓库的目标分支下

内容的提问来源于stack exchange,提问作者Mia Blake

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:46:20