Windows10下Git-Bash+Anaconda环境_distutils_hack缺失报错求助
问题描述
Windows 10系统下,在Git-Bash终端的miniforge3(Anaconda衍生环境)中,打开新终端或执行pip/python命令时,会弹出以下错误:
Error processing line 1 of C:\Users\e360769\AppData\Local\miniforge3\lib\site-packages\distutils-precedence.pth: Traceback (most recent call last): File "C:\Users\e360769\AppData\Local\miniforge3\lib\site.py", line 169, in addpackage exec(line) File "<string>", line 1, in <module> ModuleNotFoundError: No module named '_distutils_hack' Remainder of file ignored
命令仍能正常执行,但报错提示始终存在。问题出现于安装一批项目依赖包之后,排查发现怀疑是setuptools(当前版本v41.2.0)导致,但卸载setuptools后问题依旧。当前distutils-precedence.pth文件内容为:
import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') == 'local'; enabled and __import__('_distutils_hack').add_shim();
原因分析
_distutils_hack是setuptools提供的模块,作用是让Python优先使用setuptools内置的distutils版本,而非系统或conda自带的版本。出现该错误的核心原因:
- 当前setuptools版本(v41.2.0)过旧,与miniforge3环境不兼容,导致
_distutils_hack模块缺失或无法正常加载 distutils-precedence.pth文件是setuptools自动生成的配置文件,当setuptools安装不完整、版本不匹配时,该文件的加载逻辑会触发模块找不到的错误
修复方案
1. 强制重装兼容版本的setuptools
旧版本setuptools的_distutils_hack实现不完善,建议安装>=50.0.0的稳定版本,执行以下命令:
pip install --force-reinstall setuptools>=50.0.0
2. 修复/移除distutils-precedence.pth文件
如果重装setuptools后问题仍存在,可手动处理该配置文件:
- 先备份原文件:
cp "C:\Users\e360769\AppData\Local\miniforge3\lib\site-packages\distutils-precedence.pth" "C:\Users\e360769\AppData\Local\miniforge3\lib\site-packages\distutils-precedence.pth.bak" - 直接删除原文件(setuptools后续会根据环境重新生成正确的文件):
rm "C:\Users\e360769\AppData\Local\miniforge3\lib\site-packages\distutils-precedence.pth" - 或者修改文件逻辑,默认不加载
_distutils_hack(将判断条件反转):
将文件内容替换为:import os; var = 'SETUPTOOLS_USE_DISTUTILS'; enabled = os.environ.get(var, 'local') != 'local'; enabled and __import__('_distutils_hack').add_shim();
3. 验证修复效果
关闭当前Git-Bash终端,重新打开后执行python或pip --version,确认报错是否消失。
可选:更新conda基础环境
如果上述方法无效,可尝试更新conda本身,确保环境依赖组件同步:
conda update conda
内容的提问来源于stack exchange,提问作者kevkev9957
相关产品推荐
相关产品推荐

