__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']
我有三个 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']