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中:
输出显示pyranges路径已包含在系统路径中:import pyranges print(pyranges.__file__) import sys sys.path/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版本:
- 若已知保存文件时的pyranges版本,直接安装对应版本:
pip install pyranges==x.x.x - 若未知版本,可尝试安装旧版本(如0.0.99及以前),这类版本的模块结构包含
pyranges.pyranges:pip install pyranges==0.0.99
内容的提问来源于stack exchange,提问作者Arnoneel Sinha
相关产品推荐
相关产品推荐

