Conda环境中因QGIS Python安装导致ipykernel安装失败求助
问题描述
我尝试在Conda环境icepyx中安装ipykernel,以便在Jupyter Notebook中使用,但运行命令python -m ipykernel install --user --name=myenv时出现错误,启动Jupyter Notebook也触发相同问题。错误核心是QGIS的Python环境与Conda环境冲突,具体报错信息如下:
Error processing line 1 of /Users/grantmacdonald/opt/anaconda3/envs/icepyx/lib/python3.11/site-packages/matplotlib-3.7.1-py3.11-nspkg.pth: Fatal Python error: init_import_site: Failed to import the site module Python runtime state: initialized Traceback (most recent call last): File "<frozen site>", line 186, in addpackage File "<string>", line 1, in <module> File "<frozen importlib.util>", line 2, in <module> ModuleNotFoundError: No module named 'importlib._abc' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap>", line 982, in exec_module File "<frozen site>", line 616, in <module> File "<frozen site>", line 603, in main File "<frozen site>", line 384, in addsitepackages File "<frozen site>", line 226, in addsitedir File "<frozen site>", line 196, in addpackage File "/Applications/QGIS.app/Contents/Resources/python/traceback.py", line 5, in <module> import linecache File "/Applications/QGIS.app/Contents/Resources/python/linecache.py", line 11, in <module> import tokenize File "/Applications/QGIS.app/Contents/Resources/python/tokenize.py", line 32, in <module> import re File "/Applications/QGIS.app/Contents/Resources/python/re.py", line 125, in <module> import sre_compile File "/Applications/QGIS.app/Contents/Resources/python/sre_compile.py", line 17, in <module> assert _sre.MAGIC == MAGIC, "SRE module mismatch" ^^^^^^^^^^^^^^^^^^^ AssertionError: SRE module mismatch
解决方案
核心原因
QGIS自带的Python路径被加入系统环境变量,导致Conda环境运行时优先调用QGIS的Python模块,而QGIS的Python版本(通常较旧)与Conda环境的Python3.11不兼容,引发模块版本不匹配问题。
步骤1:临时屏蔽QGIS路径完成安装
在终端执行以下命令,先清除可能指向QGIS的Python路径,再安装ipykernel:
unset PYTHONPATH conda activate icepyx python -m ipykernel install --user --name=icepyx --display-name="Python (icepyx)"
步骤2:永久隔离Conda与QGIS环境
编辑shell配置文件(如~/.zshrc或~/.bash_profile),添加以下代码,确保激活Conda环境时自动屏蔽QGIS的Python路径:
# 激活Conda环境时暂存并清除PYTHONPATH conda activate() { local OLD_PYTHONPATH=$PYTHONPATH unset PYTHONPATH command conda activate "$@" export OLD_PYTHONPATH } # 退出Conda环境时恢复原PYTHONPATH conda deactivate() { command conda deactivate "$@" export PYTHONPATH=$OLD_PYTHONPATH }
保存后执行source ~/.zshrc(对应你的配置文件)使设置生效。
步骤3:重新安装并验证
激活Conda环境后,强制重装ipykernel确保环境纯净:
conda activate icepyx pip install --force-reinstall ipykernel python -m ipykernel install --user --name=icepyx --display-name="Python (icepyx)"
启动Jupyter Notebook,检查是否能正常选择Python (icepyx)内核运行代码。
备选方案:直接指定Conda Python路径
如果临时清除PYTHONPATH无效,直接使用Conda环境的Python绝对路径执行命令:
/Users/grantmacdonald/opt/anaconda3/envs/icepyx/bin/python -m ipykernel install --user --name=icepyx --display-name="Python (icepyx)"
内容的提问来源于stack exchange,提问作者Beardsley
相关产品推荐
相关产品推荐

