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

JupyterLab读取.pkl文件时出现pyranges模块找不到错误

解决读取.pkl文件时的pyranges.pyranges模块找不到问题

问题重现

在JupyterLab中使用以下代码读取.pkl文件:

import dill
# Loading scplus_obj 
scplus_obj = dill.load(open('/path-to-my-file/scplus_obj.pkl', 'rb'))

或尝试用pickle读取:

import pickle
with open('/path-to-my-file/scplus_obj.pkl', 'rb') as scplus_obj:
    data = pickle.load(scplus_obj)

均出现相同错误:

ModuleNotFoundError: No module named 'pyranges.pyranges'

已尝试操作

  • 卸载并重新安装pyranges模块,确认模块已安装且路径在系统sys.path中:
    import pyranges
    print(pyranges.__file__)
    import sys
    sys.path
    
    输出显示pyranges路径已包含在系统路径中:
    /home/cbgm/.local/lib/python3.8/site-packages/pyranges/__init__.py
    ['/home/cbgm/.local/lib/python3.8/site-packages/ray/thirdparty_files',
     '/home/cbgm',
     '/usr/lib/python38.zip',
     '/usr/lib/python3.8',
     '/usr/lib/python3.8/lib-dynload',
     '',
     '/home/cbgm/.local/lib/python3.8/site-packages',
     '/home/cbgm/scenicplus/src',
     '/usr/local/lib/python3.8/dist-packages',
     '/usr/lib/python3/dist-packages']
    

解决方案

方案1:临时映射模块别名

问题根源是序列化.pkl文件时使用的pyranges版本中存在pyranges.pyranges子模块,但当前安装的新版本pyranges已调整模块结构,不再使用该路径。可以手动将该模块名映射到已安装的pyranges:

在读取文件前添加以下代码:

import pyranges
import sys
# 给pyranges.pyranges创建别名,指向已安装的pyranges模块
sys.modules['pyranges.pyranges'] = pyranges

# 之后正常读取文件
import dill
scplus_obj = dill.load(open('/path-to-my-file/scplus_obj.pkl', 'rb'))

方案2:安装匹配版本的pyranges

如果上述临时映射无效,说明需要安装与序列化文件时完全一致的pyranges版本:

  1. 若已知保存文件时的pyranges版本,直接安装对应版本:
    pip install pyranges==x.x.x
    
  2. 若未知版本,可尝试安装旧版本(如0.0.99及以前),这类版本的模块结构包含pyranges.pyranges:
    pip install pyranges==0.0.99
    

内容的提问来源于stack exchange,提问作者Arnoneel Sinha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:29:54