__init__ 文件在 python 中无法正常工作
__init__ file doesn't work as expected in python
我有一些文件夹和 .py
文件,结构如下:
parent/
__init__.py
test.ipynb
code/
__init__.py
common.py
subcode/
__init__.py
get_data.py
在 parent
文件夹下的 __init__
文件中,我有 import code
,在 code
中,我有 import subcode
。但是当我尝试import code.subcode
时,我得到了这样一个错误:
ImportError: No module named 'code.subcode'; 'code' is not a package
但是当我只是 import code
时,没有抛出任何错误。但是,当我调用 code.subcode
时,会发生此错误:
AttributeError: module 'code' has no attribute 'subcode'
我在目录的根目录 test.ipynb
中尝试了上面提到的所有内容。
你知道是什么原因吗?我该如何解决?谢谢!
问题是您正在导入另一个名为 code
的模块,该模块安装在您的系统上,而不是您自己的模块。您可以通过在 import code
.
之后检查 code.__file__
中的模块文件路径来验证这一点
首先要做的是更改模块的名称,以避免与系统上的其他 code
包发生命名空间冲突。如果您的新包名称没有与其他名称冲突,您现在应该要么成功导入它并使其按预期运行,要么完全导入失败。
如果导入失败,很可能是因为您的parent
目录不在您的PYTHONPATH
环境变量中。
可能还有其他更多技术原因导致解释器无法识别模块,例如缓存旧定义(在这种情况下,重新启动解释器通常就足够了。可能在删除模块的任何预编译版本之后) .我看到的另一个问题是模块包含一个错误,导致解释器无法解析它。我相信还有其他奇怪的可能性。
您在 Python 3. 您需要显式执行相对导入:
from . import code
您当前获得的 code
模块是标准库 code
模块。
我有一些文件夹和 .py
文件,结构如下:
parent/
__init__.py
test.ipynb
code/
__init__.py
common.py
subcode/
__init__.py
get_data.py
在 parent
文件夹下的 __init__
文件中,我有 import code
,在 code
中,我有 import subcode
。但是当我尝试import code.subcode
时,我得到了这样一个错误:
ImportError: No module named 'code.subcode'; 'code' is not a package
但是当我只是 import code
时,没有抛出任何错误。但是,当我调用 code.subcode
时,会发生此错误:
AttributeError: module 'code' has no attribute 'subcode'
我在目录的根目录 test.ipynb
中尝试了上面提到的所有内容。
你知道是什么原因吗?我该如何解决?谢谢!
问题是您正在导入另一个名为 code
的模块,该模块安装在您的系统上,而不是您自己的模块。您可以通过在 import code
.
code.__file__
中的模块文件路径来验证这一点
首先要做的是更改模块的名称,以避免与系统上的其他 code
包发生命名空间冲突。如果您的新包名称没有与其他名称冲突,您现在应该要么成功导入它并使其按预期运行,要么完全导入失败。
如果导入失败,很可能是因为您的parent
目录不在您的PYTHONPATH
环境变量中。
可能还有其他更多技术原因导致解释器无法识别模块,例如缓存旧定义(在这种情况下,重新启动解释器通常就足够了。可能在删除模块的任何预编译版本之后) .我看到的另一个问题是模块包含一个错误,导致解释器无法解析它。我相信还有其他奇怪的可能性。
您在 Python 3. 您需要显式执行相对导入:
from . import code
您当前获得的 code
模块是标准库 code
模块。