MacOS Sonoma 14.1.1启动Jupyter Notebook遇pysqlite2模块缺失错误求助
MacOS Sonoma 14.1.1下Jupyter Notebook启动sqlite3错误解决方法
问题场景
MacOS Sonoma 14.1.1系统,通过命令行或Anaconda启动Jupyter Notebook时触发如下错误:
/Users/mac/anaconda3/bin/jupyter_mac.command ; exit; The default interactive shell is now zsh. To update your account to use zsh, please run `chsh -s /bin/zsh`. For more details, please visit https://support.apple.com/kb/HT208050. (base) MacBook-Pro-2:~ mac$ /Users/mac/anaconda3/bin/jupyter_mac.command ; exit; Traceback (most recent call last): File "/Users/mac/anaconda3/lib/python3.11/site-packages/notebook/services/sessions/sessionmanager.py", line 9, in <module> import sqlite3 File "/Users/mac/anaconda3/lib/python3.11/sqlite3/__init__.py", line 57, in <module> from sqlite3.dbapi2 import * File "/Users/mac/anaconda3/lib/python3.11/sqlite3/dbapi2.py", line 27, in <module> from _sqlite3 import * ImportError: dlopen(/Users/mac/anaconda3/lib/python3.11/lib-dynload/_sqlite3.cpython-311-darwin.so, 0x0002): Symbol not found: _sqlite3_enable_load_extension Referenced from: <55C163F0-89FA-3BFF-8FCB-DFF6F31B1972> /Users/mac/anaconda3/lib/python3.11/lib-dynload/_sqlite3.cpython-311-darwin.so Expected in: <567CDD63-191D-36E4-959B-7DE47C7AFD7A> /usr/lib/libsqlite3.dylib During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/mac/anaconda3/bin/jupyter-notebook", line 7, in <module> from notebook.notebookapp import main File "/Users/mac/anaconda3/lib/python3.11/site-packages/notebook/notebookapp.py", line 83, in <module> from .services.sessions.sessionmanager import SessionManager File "/Users/mac/anaconda3/lib/python3.11/site-packages/notebook/services/sessions/sessionmanager.py", line 12, in <module> from pysqlite2 import dbapi2 as sqlite3 ModuleNotFoundError: No module named 'pysqlite2' logout Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.
错误原因
MacOS Sonoma自带的libsqlite3.dylib缺少Anaconda Python绑定所需的_sqlite3_enable_load_extension符号,导致sqlite3模块导入失败;Jupyter尝试降级使用pysqlite2替代,但该模块未安装,最终触发启动失败。
解决方法
方法一:替换Anaconda的sqlite3库为Homebrew版本
- 安装最新版sqlite3:
brew install sqlite3 - 进入Anaconda的sqlite3动态库目录:
cd /Users/mac/anaconda3/lib/python3.11/lib-dynload/ - 备份原有库文件:
mv _sqlite3.cpython-311-darwin.so _sqlite3.cpython-311-darwin.so.bak - 创建软链接指向Homebrew安装的sqlite3库:
ln -s /usr/local/opt/sqlite3/lib/libsqlite3.dylib /Users/mac/anaconda3/lib/python3.11/lib-dynload/_sqlite3.cpython-311-darwin.so
方法二:创建新Anaconda环境重新安装Jupyter
- 创建独立环境:
conda create -n jupyter_env python=3.11 - 激活环境:
conda activate jupyter_env - 安装Jupyter Notebook:
conda install jupyter notebook - 启动Jupyter:
jupyter notebook
方法三:安装pysqlite2作为替代
- 激活Anaconda base环境:
conda activate base - 安装pysqlite2:
pip install pysqlite2
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

