解决anaconda打包幻境是报错:ImportError: cannot import name ‘tarfile‘ from ‘backports‘
问题背景:
笔者首先在anaconda环境中安装了conda pack(windows系统),在运行下面命令时出现报错:
conda pack -n yolov7 -o yolov7_cube.tar.gz
报错截图:
报错可能原因:
本地 setuptools
里自带了一个旧版 backports
包;
该旧包没有 tarfile
子模块,而 jaraco
系列库却按新版的 API 去调用,导致导入失败。
(在 Windows + Anaconda 场景下常见)
解决思路1:(此路不通)
卸载冲突的旧 backports:
conda remove backports.tarfile backports --yes
让 setuptools 重新安装一份干净的依赖:
conda install -c conda-forge --force-reinstall setuptools
或者使用pip安装:
pip install --force-reinstall "setuptools>=65"
验证:
python -c "import backports.tarfile; print('OK')"
这时报错:
于是重新安装:
conda install -c conda-forge backports.tarfile
这时再次运行上面的python代码,结果是OK。然而运行conda pack还是最初的报错,所以继续尝试。
解决思路2:(最终解决)
临时屏蔽用户级 site-packages,在 当前 CMD/Powershell 里先执行:
set PYTHONNOUSERSITE=1
然后就能顺利打包了:
完结撒花❀❀❀