Conda安装dammit后运行报错,如何让Python优先读取环境内库?
解决Conda环境中dammit运行时Python版本冲突问题
嘿,我看你作为Conda新手,在安装注释软件dammit后遇到了运行报错的问题,核心原因很明确——系统全局的Python 2.7库路径干扰了你的dammit虚拟环境(Python 3.6),导致Python优先加载了不兼容的typing模块。咱们一步步来解决:
问题根源分析
从你的报错回溯和sys.path输出能看出:
- 你的
PYTHONPATH里包含了系统的Python 2.7、3.7库路径,而且这些路径排在Conda dammit环境的路径前面 - 当Python尝试导入
typing时,先找到了系统Python 2.7下的typing.py,而Python 2.7里的unicode类型在Python 3.6中已经不存在,直接引发了报错
解决方案:让Conda环境优先加载自身库
1. 临时修复(当前会话生效)
先激活你的dammit环境,然后清空全局的PYTHONPATH,让Conda环境的路径优先级生效:
source activate dammit unset PYTHONPATH
现在再运行dammit脚本,应该就能正常启动了。
2. 永久修复(每次激活环境自动生效)
为了避免每次激活环境都要手动清空PYTHONPATH,可以给dammit环境添加激活脚本:
# 创建环境激活脚本目录(如果不存在) mkdir -p $CONDA_PREFIX/etc/conda/activate.d # 创建自动清空PYTHONPATH的脚本 echo 'unset PYTHONPATH' > $CONDA_PREFIX/etc/conda/activate.d/fix_pythonpath.sh
这样以后每次执行source activate dammit时,系统都会自动清空全局PYTHONPATH,保证dammit环境完全隔离运行。
3. 额外确认步骤
确保dammit环境中已经正确安装了Python 3兼容的typing模块:
conda install -n dammit typing
补充说明
Conda虚拟环境的核心优势就是环境隔离,激活环境时Conda会自动把自身的bin、lib路径放到PATH和sys.path的最前面,但全局PYTHONPATH的设置会打破这个优先级,所以建议不要在全局配置(比如.bashrc、.profile)中设置PYTHONPATH,或者针对Conda环境做专门的路径覆盖。
内容的提问来源于stack exchange,提问作者Rogerio Ribeiro
相关产品推荐
相关产品推荐

