为什么conda虚拟环境中yaml包显示已安装却无法正常导入使用
问题原因
你在environment.yml中声明的yaml=0.2.5是C语言实现的YAML底层解析库,不属于Python生态的第三方包,不会在Python的site-packages目录下生成可导入的模块文件,因此会出现conda列表显示已安装、但Python无法导入的异常。
conda的包管理范围不仅包含Python模块,还覆盖各类系统依赖、二进制工具、底层运行库,你安装的yaml就属于底层库类的包,所以会出现在conda已安装列表中。
解决方案
- 激活目标虚拟环境后,先卸载已安装的非Python类yaml库:
conda remove yaml
- 修改你的environment.yml配置文件,将原有的
yaml=0.2.5依赖替换为Python对应的YAML处理包:
dependencies: - python=3.8.5 - pyyaml=6.0 # 可根据需求指定对应版本,Python中导入的yaml模块就来自pyyaml包
如果你的项目确实依赖底层yaml 0.2.5的库,也可以同时保留两个依赖:
dependencies: - python=3.8.5 - yaml=0.2.5 - pyyaml=6.0
- 重新更新虚拟环境,或删除原有环境后基于修改后的配置文件重建环境:
# 更新环境方案 conda env update --file foo.yml --prune # 重建环境方案 conda env remove -n foo conda env create -f foo.yml
- 验证安装效果:激活环境后进入Python REPL,执行
import yaml即可正常调用。
内容的提问来源于stack exchange,提问作者kxp
相关产品推荐
相关产品推荐

