Spyder虚拟环境RuntimeError:调度函数默认参数仅支持None
问题情况
执行代码runfile('E:/sow/New folder/local.py', wdir='E:/sow/New folder')时触发报错,完整回溯如下:
File "E:\sow\New folder\local.py", line 5, in
import numpy as npFile "C:\Users\new\AppData\Roaming\Python\Python38\site-packages\numpy_init_.py", line 140, in
from . import coreFile "C:\Users\new\AppData\Roaming\Python\Python38\site-packages\numpy\core_init_.py", line 82, in
from . import function_baseFile "C:\Users\new\AppData\Roaming\Python\Python38\site-packages\numpy\core\function_base.py", line 24, in
def linspace(start, stop, num=None, endpoint=True, retstep=False, dtype=None,File "C:\Users\new\AppData\Roaming\Python\Python38\site-packages\numpy\core\overrides.py", line 172, in decorator
verify_matching_signatures(implementation, dispatcher)File "C:\Users\new\AppData\Roaming\Python\Python38\site-packages\numpy\core\overrides.py", line 106, in verify_matching_signatures
raise RuntimeError('dispatcher functions can only use None for 'RuntimeError: dispatcher functions can only use None for default argument values
且Spyder虚拟环境内运行所有程序都会触发该相同报错。
问题根源
这是numpy版本与Python3.8不兼容导致的:numpy 1.24及后续版本不再支持Python3.8,你当前安装的numpy版本过高,其内部函数签名验证逻辑和Python3.8的特性冲突,引发了这个错误。
修复步骤
- 卸载现有numpy
在Spyder控制台执行命令:
pip uninstall numpy -y
- 安装适配版本的numpy
选择支持Python3.8的最高稳定版本(比如1.23.5),执行:
pip install numpy==1.23.5
- 验证修复效果
在控制台输入import numpy as np,如果没有报错,说明问题已经解决。 - 备选方案
如果上述步骤无效,直接重新创建Spyder虚拟环境,再重新安装所有依赖包即可。
内容的提问来源于stack exchange,提问作者joeee

