【问题标题】:PyDev in Debug mode: NameError: dict_pop when importing pandas or xarray调试模式下的 PyDev:NameError: dict_pop 在导入 pandas 或 xarray 时
【发布时间】:2017-08-16 19:27:40
【问题描述】:

我正在运行代码以从带有 xarray 的 URL 的 NetCDF 文件中读取数据。当我在 Eclipse/PyDev 中以调试模式运行此代码时,我看到作为正常 Python 运行或从命令行或作为 Jupyter 笔记本的单元启动时不会发生的错误。

当我在代码中包含导入 xarray 时出现以下错误:

 NameError: name 'dict_pop' is not defined

完整的堆栈跟踪如下所示:

pydev debugger: starting (pid: 4004)
URL: https://www.ncei.noaa.gov/data/nclimgrid/nclimgrid_prcp.nc
Traceback (most recent call last):
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 741, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:15515)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 254, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.do_wait_suspend (_pydevd_bundle/pydevd_cython_win32_35_64.c:5631)
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 764, in do_wait_suspend
    self._activate_mpl_if_needed()
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 415, in _activate_mpl_if_needed
    activate_function = dict_pop(self.mpl_modules_for_patching, module)
NameError: name 'dict_pop' is not defined
2017-08-16  15:25:06 ERROR Failed to complete ERROR
Traceback (most recent call last):
  File "C:\home\git\indices_github\process_xarray.py", line 27, in <module>
    ncdata = url.read()
  File "C:\home\git\indices_github\process_xarray.py", line 27, in <module>
    ncdata = url.read()
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 982, in _pydevd_bundle.pydevd_cython_win32_35_64.SafeCallWrapper.__call__ (_pydevd_bundle/pydevd_cython_win32_35_64.c:19346)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 498, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:18639)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 750, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:15669)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 741, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:15515)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 254, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.do_wait_suspend (_pydevd_bundle/pydevd_cython_win32_35_64.c:5631)
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 764, in do_wait_suspend
    self._activate_mpl_if_needed()
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 415, in _activate_mpl_if_needed
    activate_function = dict_pop(self.mpl_modules_for_patching, module)
NameError: name 'dict_pop' is not defined
Traceback (most recent call last):
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 1621, in <module>
    main()
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 1615, in main
    globals = debugger.run(setup['file'], None, None, is_module)
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 1022, in run
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\_pydev_imps\_pydev_execfile.py", line 25, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "C:\home\git\indices_github\process_xarray.py", line 27, in <module>
    ncdata = url.read()
  File "C:\home\git\indices_github\process_xarray.py", line 27, in <module>
    ncdata = url.read()
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 982, in _pydevd_bundle.pydevd_cython_win32_35_64.SafeCallWrapper.__call__ (_pydevd_bundle/pydevd_cython_win32_35_64.c:19346)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 498, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:18639)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 750, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:15669)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 741, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.trace_dispatch (_pydevd_bundle/pydevd_cython_win32_35_64.c:15515)
  File "_pydevd_bundle\pydevd_cython_win32_35_64.pyx", line 254, in _pydevd_bundle.pydevd_cython_win32_35_64.PyDBFrame.do_wait_suspend (_pydevd_bundle/pydevd_cython_win32_35_64.c:5631)
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 764, in do_wait_suspend
    self._activate_mpl_if_needed()
  File "C:\User Programs\eclipse\neon\plugins\org.python.pydev_5.9.0.201708101613\pysrc\pydevd.py", line 415, in _activate_mpl_if_needed
    activate_function = dict_pop(self.mpl_modules_for_patching, module)
NameError: name 'dict_pop' is not defined

我正在使用安装在 Python 3.5.3 (Anaconda) 上的最新/最新版本的 xarray 和 pandas。

“import pandas”语句也出现同样的错误,因此这可能与 pandas 相关,因为 xarray 内部依赖于 pandas。

包安装在Anaconda中,如下图:

$ conda list pandas
# packages in environment at C:\home\Anaconda3:
#
pandas                    0.20.3                   py35_1    conda-forge

$ conda list xarray
# packages in environment at C:\home\Anaconda3:
#
xarray                    0.9.6                    py35_0    conda-forge

我再次可以使用 pandas 和 xarray 的导入运行此代码,而不会从命令行和/或在 Jupyter 笔记本中出现问题,这只发生在我以调试模式在 Eclipse/PyDev 中启动代码时(常规 Python 运行按预期工作)。

我用来测试的 Python 代码示例:

import sys
import xarray as xr

if __name__ == '__main__':

    try:

        # get the command line arguments
        input_netcdf_url = sys.argv[1]
        ds = xr.open_dataset(input_netcdf_url)

    except:

        raise

谁能给点建议?提前感谢您的任何建议。

【问题讨论】:

    标签: eclipse pandas pydev


    【解决方案1】:

    升级到 5.9.2...这是促使新版本发布的关键问题之一。

    【讨论】:

    • 谢谢!这解决了我的问题。
    猜你喜欢
    • 2019-07-04
    • 2021-05-11
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 2013-06-22
    • 2023-04-02
    • 1970-01-01
    相关资源
    最近更新 更多