PyInstaller与pathlib冲突:移除pathlib致Anaconda Navigator被删
方案1:创建独立conda环境用于PyInstaller
这是最稳妥的隔离方案,完全避免依赖冲突:
- 新建一个专门给PyInstaller用的conda环境,指定匹配的Python版本:
conda create -n pyinstaller_env python=3.10.9 - 激活环境,安装指定版本的PyInstaller和项目依赖:
conda activate pyinstaller_env pip install pyinstaller==5.11.0 # 按需安装你的项目依赖,比如numpy、requests等 - 之后每次打包时,先激活这个环境运行PyInstaller即可。原环境保留Anaconda Navigator和pathlib,互不干扰。
方案2:临时移除pathlib打包后恢复
适合不想多开环境的场景,操作步骤简单:
- 先备份当前环境的包列表,以防依赖异常:
conda list --export > env_backup.txt - 移除pathlib(此时Navigator会被连带卸载,先不用管):
conda remove pathlib - 运行PyInstaller完成脚本打包:
pyinstaller your_script.py - 打包完成后,重新安装Anaconda Navigator,它会自动补装所需的pathlib:
conda install anaconda-navigator - 如果出现依赖缺失,用备份文件恢复环境:
conda create -n restored_env --file env_backup.txt
方案3:修改PyInstaller的兼容性检测(不推荐)
这是应急的hack方式,可能引发未知问题,谨慎使用:
- 找到conda环境中PyInstaller的兼容性检查文件,路径大致为:
你的conda环境路径/Lib/site-packages/PyInstaller/utils/requirements_check.py - 打开文件,找到检测pathlib的代码块,直接注释掉:
# if is_package_installed('pathlib'): # raise SystemExit( # "The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller. " # "Please remove this package using conda remove then try again." # ) - 保存后PyInstaller就不会因pathlib存在报错,但后续PyInstaller更新后需要重新操作。
内容的提问来源于stack exchange,提问作者Lisitrx
相关产品推荐
相关产品推荐

