遭遇AttributeError:module 'signal'无'SIGINT'属性,升级joblib无效求助
问题描述
运行程序时触发如下错误:
File "C:\Users\DELL\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\joblib\externals\loky\backend\resource_tracker.py", line 66, in <module> _IGNORED_SIGNALS = (signal.SIGINT, signal.SIGTERM) ^^^^^^^^^^^^^ AttributeError: module 'signal' has no attribute 'SIGINT'
已尝试升级joblib,但错误仍未解决,寻求可行的修复方案。
解决办法
- 确认运行环境类型:
signal.SIGINT是POSIX系统专属信号,Windows原生Python环境不支持这类信号。如果是在Windows下运行,建议切换到WSL(Windows子系统Linux)环境执行代码,或者更换到Linux/macOS系统。 - 降级loky版本:部分新版loky对Windows环境的兼容处理存在问题,可尝试降级到稳定兼容版本,执行命令:
pip install loky==3.0.2 - 更换joblib并行后端:在代码中强制指定joblib使用
multiprocessing后端,避开loky的信号处理逻辑,示例代码:from joblib import Parallel, delayed # 使用multiprocessing替代loky作为后端 results = Parallel(n_jobs=-1, backend="multiprocessing")( delayed(your_target_function)(param) for param in your_param_list ) - 排查模块命名冲突:检查项目目录下是否存在名为
signal.py的自定义文件,该文件会覆盖Python标准库的signal模块,导致无法找到SIGINT属性。若存在,立即重命名该文件并清理Python缓存。
内容的提问来源于stack exchange,提问作者Amr Safwat
相关产品推荐
相关产品推荐

