【问题标题】:Out of sync Python source code from Enthought Canopy Editor?来自 Enthought Canopy Editor 的 Python 源代码不同步?
【发布时间】:2013-08-26 12:36:57
【问题描述】:

我在 Mac OSX 中使用 Enthought Canopy 1.0.3 Python 环境,也是它的内置文本编辑器。

我在尝试从开发框架中包含的 ipython 控制台运行脚本时检测到一个奇怪的行为。我收到一条错误消息,指出行号与编辑器中显示的实际行号不匹配,而是与源代码的先前版本匹配。

例如,这是我从 ipython 控制台获得的:

    %run /Users/xavi/workspace/python/saliency/maps.py

(...)

    /Users/xavi/workspace/python/saliency/binarization.py in calculate_foreground_ratio(binaryMask)
      7 
      8 
----> 9 def calculate_foreground_ratio( binaryMask ):
    10     """ Compute the ratio of foreground pixels in the provided binary mask """
    11     return binaryMask.sum().astype(float) / np.size( binaryMask ).astype(float)

NameError: global name 'np' is not defined

请注意,他指的是关于 np.定义,这是一个错误,应该参考第 11 行,而不是第 9 行。

我还尝试使用 python -m compileall 强制重新编译。

关于如何解决这个同步问题的任何想法?

非常感谢您。

【问题讨论】:

  • 这里的罪魁祸首将是linecache 模块,它存储了在回溯中显示的代码的sn-ps。它必须有陈旧的线条。我以为我们已经在 IPython 中解决了这个问题 - Canopy 是否使用最新的 IPython?

标签: python macos synchronization ipython enthought


【解决方案1】:

np 模块不适用于围绕代码执行的全局变量。确保将 numpy 作为 np 导入模块,它会正常工作。这不是 Canopy 问题,而只是范围解析问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    相关资源
    最近更新 更多