运行 来自 IDE 时的 numba 异常(VS2015)
numba exception when run from inside IDE (VS2015)
我有 visual studio 2015 和 PTVS,用 Anaconda Python 3.4 和 3.5(64 位)测试过。
当脚本导入 numba 时我立即得到一个异常,这是一个最小的例子:
import numba
例外情况是:
dictionary changed size during iteration
异常来自
envs\python3.5\Lib\site-packages\numba\config.py line 169
似乎只有在 VS 内部,以下代码才会出错,请注意它遍历 locals()
并正在更新 globals()
for name, value in locals().items():
if name.isupper():
globals()[name] = value
运行 来自 Interactive window 的脚本,在 NVidia 的 Visual Profiler 中,jupyter notebook/command 行解释器工作得很好所以我怀疑它一定与 visual studio.
当我在环境之间比较 sys.modules
的内容时,我发现 visual studio 在调试时导入了一些额外的模块
'visualstudio_py_debugger',
'visualstudio_py_repl',
'visualstudio_py_util'
否则环境之间没有区别。此外,没有 numba
的脚本在将它们导入 VS 时不会抛出任何异常。我该如何解决这个问题?
在函数外,locals() 和 globals() 引用相同的数据结构。 Python 不允许更改正在迭代的数据结构。
这已在此提交的库中修复
https://github.com/numba/numba/commit/e50ab6ee4d95192d364cccced36cf0889860d023
我有 visual studio 2015 和 PTVS,用 Anaconda Python 3.4 和 3.5(64 位)测试过。
当脚本导入 numba 时我立即得到一个异常,这是一个最小的例子:
import numba
例外情况是:
dictionary changed size during iteration
异常来自
envs\python3.5\Lib\site-packages\numba\config.py line 169
似乎只有在 VS 内部,以下代码才会出错,请注意它遍历 locals()
并正在更新 globals()
for name, value in locals().items():
if name.isupper():
globals()[name] = value
运行 来自 Interactive window 的脚本,在 NVidia 的 Visual Profiler 中,jupyter notebook/command 行解释器工作得很好所以我怀疑它一定与 visual studio.
当我在环境之间比较 sys.modules
的内容时,我发现 visual studio 在调试时导入了一些额外的模块
'visualstudio_py_debugger',
'visualstudio_py_repl',
'visualstudio_py_util'
否则环境之间没有区别。此外,没有 numba
的脚本在将它们导入 VS 时不会抛出任何异常。我该如何解决这个问题?
在函数外,locals() 和 globals() 引用相同的数据结构。 Python 不允许更改正在迭代的数据结构。 这已在此提交的库中修复 https://github.com/numba/numba/commit/e50ab6ee4d95192d364cccced36cf0889860d023