这是一个常见的问题,实际上没有万无一失的方法可以避免它。至少您可以确保您的模块全部位于包中(如果这是一个没有可重用代码的小项目,则至少有一个包),以便您将它们用作而不是(还要from mypackage import code确保import code您使用绝对导入等),并且您始终从包含包的目录运行代码,而不是从包目录本身运行代码(python 将当前工作目录插入到 的第一个位置sys.path)。
这不会阻止所有可能的名称屏蔽问题,但应该可以最大程度地减少这些问题。现在根据经验,一旦您至少经历过一次此类问题,您通常会很快发现症状 - 最常见和最明显的是一些完全不相关的 stlib 或第三方模块开始因 ImportErrors 或 AttributeErrors 崩溃(带有“模块 X 没有属性 Y”消息)。此时,如果您刚刚在自己的代码中添加了一个新模块,则很可能是新模块破坏了所有内容,因此您只需重命名它(确保清理 .pyo/.pyc 文件(如果有))并查看是否它解决了这个问题。否则检查回溯以找出哪些导入失败,大多数时候您会发现当前工作目录中有同名的模块或包。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |