Como as importações relativas implícitas funcionam no Python?
Suponha que eu tenho os seguintes arquivos,
pkg/
pkg/__init__.py
pkg/main.py # import string
pkg/string.py # print("Package's string module imported")
Agora, se eu corrermain.py
, diz"Package's string module imported"
.
Isso faz sentido e funciona de acordo com esta declaração nesteligação:
"ele procurará primeiro no diretório do pacote"
Suponha que eu modifiquei ligeiramente a estrutura do arquivo (adicionei um diretório principal):
pkg/
pkg/__init__.py
plg/core/__init__.py
pkg/core/main.py # import string
pkg/string.py # print("Package's string module imported")
Agora, se eu correrpython core/main.py
, ele carrega o built-instring
módulo.
Também no segundo caso, se for necessário cumprir a declaração "ele procurará primeiro no diretório do pacote " não deveria carregar o localstring.py
Porquepkg
é o "diretório de pacotes"?
Meu senso do termo "diretório de pacotes" éespecificamente apasta raiz de umcoleção de pastas com__init__.py
. Então, neste caso,pkg é o "diretório do pacote". É aplicável amain.py
e também arquivos em subdiretórios comocore/main.py
porque faz parte deste "pacote".
Isso é tecnicamente correto?
PS: O que se segue depois#
no snippet de código é o conteúdo real do arquivo (sem espaços à esquerda).