【问题标题】:Python Error Shows Innaccurate CodePython 错误显示不准确的代码
【发布时间】:2017-04-09 05:08:13
【问题描述】:

我正在开发具有以下结构的包。

Package
  |- __init__.py
  |- dir
    |- subdir
      |- moduleB.py
      |- __init__.py 
    |- __init__.py
    |- moduleA.py
main.py

main.py 尝试导入 moduleA,然后再导入 moduleB。但是,它在尝试导入 moduleA 时遇到了错误,并引用了已更改的代码行中的错误。

我认为这是一个缓存问题,所以我删除了包中的所有 pycache 文件,但仍然失败。

我能做些什么来解决这个问题,我能做些什么来确保这不会成为问题?

实际代码是

import tensorflow as tf
from UROP.data_structure.default_dictionary import DefaultDictionary


def default_distribution(shape, variation, name=''):
    return tf.truncated_normal(
        shape=shape,
        stddev=variation,
        name=name
    )

【问题讨论】:

  • 你能把错误包括进来吗?
  • main.py 尝试import Package.moduleA 时出现错误?您可能会得到与您想象的不同的模块。 os.path.realpath('Package.__file__) 会很有趣。
  • 明天早上我会尽快用realpath更新。
  • 另外,使用 pdb3 之类的调试器逐步完成导入。也许有人正在用路径做一些“聪明”的事情。
  • 当您遇到错误时,最好注意它所说的内容。在这种情况下,它准确地说明了问题所在。未找到模块 Research.data_structures.default_dictionary。这可能是缺少依赖项或您的 lib 路径有问题。

标签: python python-3.x tensorflow


【解决方案1】:

@tdelaney 是正确的,使用调试器单步执行会发现我使用的内核将我重定向到它自己的私有缓存。我在 Atom 中使用了 Hydrogen,然后重新启动计算机清除了缓存并解决了问题。

但是,我无法找到不需要重新启动计算机的缓存依赖项的长期解决方案。

【讨论】:

    猜你喜欢
    • 2019-11-17
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多