Хотя Python работает без файла __init__.py
, вы все равно должны включить его.
Указывает, что пакет должен рассматриваться как модуль, поэтому включите его (даже если он пуст).
В некоторых случаях вы можете использовать __init__.py
файл:
Представьте, что у вас была следующая файловая структура:
main_methods
|- methods.py
И methods.py
содержали это:
def foo():
return 'foo'
Чтобы использовать foo()
, вам потребуется одно из следующих:
from main_methods.methods import foo # Call with foo()
from main_methods import methods # Call with methods.foo()
import main_methods.methods # Call with main_methods.methods.foo()
Возможно, вам нужно (или вы хотите) сохранить methods.py
внутри main_methods
(например, среды выполнения / зависимости), но вы хотите импортировать только main_methods
.
Если вы изменили имя methods.py
на __init__.py
, вы можете использовать foo()
, просто импортировав main_methods
:
import main_methods
print(main_methods.foo()) # Prints 'foo'
Это работает, потому что __init__.py
рассматривается как часть пакета.
Некоторые пакеты Python действительно делают это. Например, JSON , где запущенный import json
фактически импортирует __init__.py
из пакета json
( см. Здесь структуру файла пакета ):
Исходный код: Lib/json/__init__.py