當我在numpy \ __ init__.py庫中看到代碼後,試圖自己寫__init__.py時,我很困惑。如何在__init__.py中正確地擴展變量__all__?
這裏是numpy的\ __ init__.py代碼片段
__all__.extend(['__version__', 'pkgload', 'PackageLoader',
'show_config'])
__all__.extend(core.__all__)
__all__.extend(_mat.__all__)
__all__.extend(lib.__all__)
__all__.extend(['linalg', 'fft', 'random', 'ctypeslib', 'ma'])
而且我的目錄結構是:
應用程序/
...... test.py
。 ..... lib1 \
............ __init__.py
............ Lib1File.py
............ sublib1 \
.......... .. ............ __init__.py
............ ............ SubLib1File.py
在test.py的代碼是
from lib1 import *
if __name__ == "__main__":
result1 = Lib1File.add(10, 15) # a simple function in Lib1File.py
print(result1)
result2 = Sublib1File.mul(10,15) # a simple function in Sublib1File.py
print(result2)
在LIB1代碼\ __ init__.py是
from . import sublib1
__all__ = ["Lib1File"]
__all__.extend(sublib1.__all__)
print(__all__) # it can print ['Lib1File', 'Sublib1File'] on console
在LIB1代碼\ sublib1 \ __ init__.py是
__all__ = ["Sublib1File"]
但是,當我跑test.py,我得到了一個錯誤
*文件 「test.py」,行1,在模塊中從lib1導入。 AttributeError的:模塊 'LIB1' 有沒有屬性 'Sublib1File'
我的問題是
爲什麼我在LIB1 \ __ init__.py得到這個錯誤,即使
__all__ = ['Lib1File', 'Sublib1File']
?我應該如何修復它,如果我仍然只使用一個進口
from lib1 import *
?如果我們不能解決問題2,那麼在numpy \ __ init__中
__all__.extend(...)
的目的是什麼?
是的,我注意到了。但我仍然不知道如何解決這個問題。你能給我更具體的修改嗎?謝謝 –