Conda环境下Spyder使用PyGMT出现版本与依赖报错求助
解决步骤
两个问题分别是Conda频道优先级错误导致的依赖版本不匹配、跨环境调用程序导致的版本不对,按以下步骤操作即可:
1. 先修复PyGMT加载报错(GLIBCXX/libgmt找不到问题)
你看到的GLIBCXX_3.4.30 not found报错,本质是创建环境时混用了不同频道的安装包,且环境优先调用了系统自带的旧版libstdc++库,没有使用conda环境内打包的新版依赖:
- 终端执行命令激活pygmt环境:
conda activate pygmt - 给当前环境强制设置conda-forge频道为最高优先级,避免依赖混装:
conda config --env --add channels conda-forge conda config --env --set channel_priority strict - 重装/更新匹配版本的依赖包,补全缺失的库文件:
conda install -c conda-forge libstdcxx-ng gdal pygmt --update-all - 先在终端验证PyGMT是否能正常加载,不出现报错即为修复成功:
python -c "import pygmt; print(pygmt.show_versions())"
如果这一步还是提示libstdc++版本不对,执行下面的命令把conda环境的库路径加到加载优先级最前面,可以把这行写到~/.bashrc里永久生效:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
2. 修复Spyder版本为5的问题
你现在打开的Spyder3是系统/base环境里的旧版本,没有关联到pygmt环境,两种方案选一个即可:
方案1(最省事,不改动原有spyder-env配置)
直接在pygmt环境内安装Spyder5:
- 保持pygmt环境激活状态,执行:
conda install -c conda-forge spyder=5 - 后续使用时必须先激活pygmt环境,再在终端输入
spyder启动,不要点系统桌面的快捷方式,否则会打开其他环境的旧版Spyder。
方案2(复用原有spyder-env里的Spyder5)
不用额外装Spyder,给pygmt环境注册内核到现有Spyder即可:
- 激活pygmt环境,安装ipykernel并注册到系统:
conda install ipykernel python -m ipykernel install --user --name=pygmt - 切回spyder-env环境,启动你原来用的Spyder5,点击界面右下角的Python解释器选项,选择路径为
/home/vialb/miniconda3/envs/pygmt/bin/python的解释器,重启内核后就能正常调用pygmt环境的所有库。
补充:最开始spyder-env里找不到libgmt.so的问题
这个报错也是因为没有设置conda-forge的严格频道优先级,导致安装pygmt时没装全GMT的二进制依赖。如果你不想单独维护pygmt环境,直接回到spyder-env里按前面的步骤设置频道优先级,再执行conda install -c conda-forge pygmt就能正常安装使用,不会出现找不到libgmt.so的问题。
内容的提问来源于stack exchange,提问作者BenjiBoy
相关产品推荐
相关产品推荐

