Справочник по языку Python гласит:
Чтобы указать оборудованию импорта, что спецификация представляет часть пространства имен.средство поиска записи пути устанавливает для «loader» в спецификации значение None
, а для «submodule_search_locations» - список, содержащий эту часть.
Справочник по библиотеке Python состояния:
Загрузчик для загрузки.Для пакетов пространства имен это должно быть установлено на None
.
При этом создается пакет пространства имен, части которого расположены в двух разных путях a/
и b/
в файловой системе:
a/
namespace_package/
module_1.py
module_2.py
b/
namespace_package/
module_3.py
, затем добавьте эти пути в переменную среды PYTHONPATH
:
export PYTHONPATH="a:b"
и, наконец, импортируйте пакет пространства имен и напечатайте его атрибуты __spec__.loader
и __loader__
с интерпретатором CPython 3.7:
python3 -c "import namespace_package; print(namespace_package.__spec__.loader); print(namespace_package.__loader__)"
показывает, что они являются , а не None
:
<_ frozen_importlib_external._NamespaceLoader объект в 0x104b04128> <_frozen_importlib_external._NamespaceLoader 004 объекта 004 на 004* </blockquote>
Это ошибка документации, ошибка реализации или мое неправильное толкование?