M1 MacBook中Jupyter Notebook导入nbinteract时ImportError问题排查
解决M1 MacBook Jupyter Notebook导入nbinteract的ImportError问题
问题本质
Python 3.10及以上版本中,base64模块的encodestring方法已被移除,替换为encodebytes。你遇到的错误是因为nbinteract依赖的旧版本库(如nbformat)仍在调用这个废弃API,与Python 3.11不兼容。
可行解决方法
1. 降级Python版本到3.9或更低
nbinteract最后一次更新在2020年,对Python 3.10+兼容性较差,降级到Python 3.9可彻底解决版本兼容问题:
# 用pyenv安装Python3.9(若未安装pyenv需先安装) pyenv install 3.9.16 pyenv local 3.9.16 # 创建并激活虚拟环境 python -m venv venv source venv/bin/activate # 重新安装所有依赖 pip install numpy matplotlib pandas seaborn ipywidgets nbinteract jupyter
2. 手动修复依赖库代码
若不想降级Python,找到报错的文件(路径为/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/nbformat/convert.py),打开后修改代码:
将:
from base64 import encodestring
替换为:
from base64 import encodebytes as encodestring
修改后保存,重新运行Jupyter Notebook即可。
3. 替换nbinteract为维护活跃的工具
由于nbinteract已停止维护,建议用以下工具替代:
- 直接使用已导入的
ipywidgets原生交互功能,interact、interactive等方法可实现大部分交互需求 - 使用
plotly创建交互式图表,功能更丰富且持续更新
内容的提问来源于stack exchange,提问作者greatshuey_33
相关产品推荐
相关产品推荐

