При написании собственного пакета в Python, __init__.py
содержит импорт, такой как os
, sys
? Или они должны быть импортированы внутри файла, который их использует?Должно ли __init__.py также содержать импорт модулей python?
2
A
ответ
3
Импортируйте модули в модуль, который их использует.
Размещение import os
в __init__.py
поставит os
в глобальном пространстве имен пакета, но это не будет влиять на пространство имен модуля, который использует os
. Глобальные пространства имен не разделяются между модулями или пакетами, поэтому вы получите NameError
с, если вы не импортировали их в модуль, который использует os
.
Смежные вопросы
- 1. импорт Python с __init__.py
- 2. Импорт классов Python (проблемы __init__.py)
- 3. Импорт файлов в Python из __init__.py
- 4. Импорт функции из __init__.py в Python
- 5. Импорт из __init__.py в файле
- 6. Python - Импорт модулей
- 7. Импорт собственных модулей Python
- 8. Ошибка импорта __init__.py
- 9. Импорт переменных, указанных в __init__.py
- 10. Импорт ленивого загрузочного модуля в файл __init__.py python
- 11. Python Импорт с использованием __init__.py вместо добавления в sys.path
- 12. Импорт модулей относительных модулей проекта Python
- 13. Импорт модулей системы в python
- 14. Python упаковки - что __init__.py
- 15. Python __init__.py и классы
- 16. (Python) Создание пакетов __init__.py
- 17. Импорт переменной из корня __init__.py в пакете Python
- 18. Python Импорт ошибка даже с __init__.py файла
- 19. Ошибка Sklearn __init__.py
- 20. Как изменилось __init__.py?
- 21. Невозможно использовать __init__.py
- 22. Правильный стиль кодирования __init__.py в модулях Python
- 23. импорт модулей в python
- 24. Python: относительный импорт без пакетов или модулей
- 25. Импорт модулей python с прямым путем
- 26. using __init__.py
- 27. Создание библиотеки python: как писать __init__.py
- 28. Метод импорта из __init__.py
- 29. Является ли __init__.py самостоятельными письменными модулями?
- 30. Импорт ведет себя по-другому, когда в __init__.py импортируется
Включение 'import os', однако, в' __init __. Py' будет влиять на любой модуль, который выполняет 'from my_awesome_package import *', потому что теперь они будут иметь модуль 'os' в своем пространстве имен, что неожиданно повлияет на возможные функции или глобальные переменные. Хотя использование '*' недоверчиво, достаточно людей по-прежнему используют его, и авторы пакетов должны быть внимательны даже от них. –
@ sigmavirus24: Многие модули и пакеты разработаны специально для поддержки стиля кодирования 'from xxx import * 'и делают это определяя переменную уровня модуля или пакета с именем '__all__', которая содержит последовательность строк имен определённых ею вещей (исключая все, что не упоминается). Для пакетов, которые часто создаются в файле '__init_.py'. – martineau
@martineau Я хорошо знаю об этом. ОП просил о том, чтобы вставить это там, не упоминая об этом или что-то еще, поэтому я обратился к этим проблемам с этим и ничего больше. –