__all__ 无法在 __init_.py 中工作以允许特定模块导入我的 Python 代码

__all__ not working in __init_.py to allow specific module to import my Python code

我有三个 python 文件如下

ProjDir--> helloworld.py 
ProjDir--> pak--> Mymodule.py
ProjDir--> pak--> __init__.py

我在 init.py 中使用了 all 来只允许一个对象 'dic' 这是它的正常行为应该这样做但是 all 没有在 init.py 文件中显示它的效果但是当我插入 all在 Mymodule.py 里面显示它的效果

我已经在此处上传了我的代码的 .zip 文件 MyProject, 你能告诉我为什么会这样吗?

还有一件事我在 helloworld.py 文件中观察到,当我不使用时 从 pak.Mymodule 导入 * 但不是使用简单的 进口 pak.Mymodule 然后使用 dir() 即使在完全删除 all

之后我也看不到任何导入的模块

init.py文件的代码是

__all__ = ['dic']  # here it is not working

Mymodule.py 文件的代码是

# __all__ = ['dic'] # here __all__ it is working
def func( par ):
   return (print ("Hello : ", par))

dic = {1:22, "k1":'rr'}

helloworld.py 文件的代码是

from pak.Mymodule import *
print(dir())

__init__.py改为:

from .Mymodule import *
__all__ = ['dic']

helloworld.py改为:

from pak import *
print(dir())

然后你应该得到输出

['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'dic']