首页 > 解决方案 > 导入模块时未调用 __init__.py

问题描述

我有一个我写的模块,结构如下

mymodule
  - mymodule
    - foo.py
    - bar.py
    - __init__.py
  - README.md
  - env

我的__init__.py包括:

print('This should print something if called, right?')
from .foo import *
from .bar import *

并且 foo 和 bar 分别包含类FooBar

testing_imports.py然后在依赖于类的文件的另一个目录中FooBar在这些脚本中,我导入如下mymodule代码:

import sys
sys.path.append(PATH_TO_DIRECTORY/mymodule)

import mymodule # I would expect that print statement in my __init__.py to print here

f = Foo()

哪个返回

NameError: name 'Foo' is not defined

当我使用时,dir(mymodule)我回来了['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__'],这表明在我导入它时在我的模块或 init 中没有找到任何东西。

如果我改变我testing_imports.py的使用

from mymodule.foo import Foo

然后我可以创建一个类Foo,如果我使用dir(mymodule)foo会在命名空间中看到。

似乎我__init__.py没有像我期望的那样被调用......因为没有任何东西被打印出来。

任何人都可以澄清正确的做法__init__.py吗?谢谢你。

标签: python-3.8

解决方案


推荐阅读