我有一些具有.py以下结构的文件夹和文件:
parent/
__init__.py
test.ipynb
code/
__init__.py
common.py
subcode/
__init__.py
get_data.py
Run Code Online (Sandbox Code Playgroud)
在__init__该parent文件夹下的文件中,我有import code,在其中之一中code,我有import subcode。但是当我尝试时import code.subcode,我得到了这样的错误:
ImportError: No module named 'code.subcode'; 'code' is not a package
Run Code Online (Sandbox Code Playgroud)
但是当我刚刚时import code,没有抛出任何错误。但是,当我调用 时code.subcode,会发生此错误:
AttributeError: module 'code' has no attribute 'subcode'
Run Code Online (Sandbox Code Playgroud)
test.ipynb我在位于目录根目录的中尝试了上面提到的所有内容。
您知道原因是什么以及如何解决吗?谢谢!
问题是您正在导入另一个名为 that 的模块,code该模块安装在您的系统上,而不是您自己的模块。code.__file__您可以通过检查后面的模块文件路径来验证这一点import code。
要做的第一件事是更改模块的名称,以避免与code系统上的其他包发生名称空间冲突。如果您的新包名称没有与其他名称冲突,那么您现在应该成功导入它并使其按预期运行,或者完全导入失败。
如果导入失败,很可能是因为你的parent目录不在你的PYTHONPATH环境变量中。
还可能存在其他更技术性的原因,导致解释器无法识别模块,例如缓存旧定义(在这种情况下,重新启动解释器通常就足够了。可能是在删除模块的任何预编译版本之后)。我看到的另一个问题是模块包含一个错误,导致解释器无法解析它。我确信还有其他奇怪的可能性。
| 归档时间: |
|
| 查看次数: |
3733 次 |
| 最近记录: |