Nuitka打包Python项目遇锁获取失败问题求助
Nuitka打包Backend C阶段CacheLockException问题解决
问题描述
在Anaconda环境下使用Nuitka打包Python项目,执行命令:
python -m nuitka --standalone --show-memory --show-progress --follow-imports --nofollow-import-to=util --output-dir=out --include-data-dir=mdf=mdf --windows-icon-from-ico=./blur.ico --enable-plugin=numpy,pyside2 blur_exe.py
PASS 1和PASS 2阶段运行正常,但Backend C编译阶段出现锁获取失败报错:
Nuitka-Scons:INFO: Backend C compiler: cl (cl 14.2). Backend C: 80.3%|████████████████████ | 1318/1642scons: *** [module.torch.optim._multi_tensor._functional.obj] CacheLockException : Failed to acquire lock Local\C--Users-JHU3SZH-AppData-Local-Nuitka-Nuitka-Cache-clcache-objects-bce after 10000ms; try setting CLCACHE_OBJECT_CACHE_TIMEOUT_MS environment variable to a larger value. scons: *** [module.torch.optim._multi_tensor.adamw.obj] CacheLockException : Failed to acquire lock Local\C--Users-JHU3SZH-AppData-Local-Nuitka-Nuitka-Cache-clcache-objects-fb5 after 10000ms; try setting CLCACHE_OBJECT_CACHE_TIMEOUT_MS environment variable to a larger value. scons: *** [module.torch.optim._multi_tensor.adadelta.obj] CacheLockException : Failed to acquire lock Local\C--Users-JHU3SZH-AppData-Local-Nuitka-Nuitka-Cache-clcache-objects-000 after 10000ms; try setting CLCACHE_OBJECT_CACHE_TIMEOUT_MS environment variable to a larger value. scons: *** [module.torch.optim._multi_tensor.adagrad.obj] CacheLockException : Failed to acquire lock Local\C--Users-JHU3SZH-AppData-Local-Nuitka-Nuitka-Cache-clcache-objects-000 after 10000ms; try setting CLCACHE_OBJECT_CACHE_TIMEOUT_MS environment variable to a larger value.
已尝试关闭关联程序释放文件夹占用,问题仍未解决。
解决方案
1. 延长缓存锁超时时间
根据报错提示,增大CLCACHE_OBJECT_CACHE_TIMEOUT_MS环境变量值,给足够时间获取锁。在Anaconda终端中先执行:
set CLCACHE_OBJECT_CACHE_TIMEOUT_MS=30000
再重新运行原Nuitka打包命令。
2. 禁用clcache缓存
直接关闭clcache编译缓存,避免锁竞争问题。修改打包命令添加--disable-clcache参数:
python -m nuitka --standalone --show-memory --show-progress --follow-imports --nofollow-import-to=util --output-dir=out --include-data-dir=mdf=mdf --windows-icon-from-ico=./blur.ico --enable-plugin=numpy,pyside2 --disable-clcache blur_exe.py
3. 清理Nuitka缓存目录
手动删除残留的锁文件和缓存数据,路径为C:\Users\JHU3SZH\AppData\Local\Nuitka\Nuitka-Cache,删除后重新执行打包命令。
4. 强制单进程编译
多进程编译会增加锁竞争概率,添加--jobs=1参数强制单进程编译:
python -m nuitka --standalone --show-memory --show-progress --follow-imports --nofollow-import-to=util --output-dir=out --include-data-dir=mdf=mdf --windows-icon-from-ico=./blur.ico --enable-plugin=numpy,pyside2 --jobs=1 blur_exe.py
内容的提问来源于stack exchange,提问作者Huihua Jiang
相关产品推荐
相关产品推荐

