Importar módulo do subdiretório em Python
-
Importar um módulo do subdiretório em Python usando
__init__.py -
Importar um módulo do subdiretório em Python usando o método
sys.path.insert()
Este tutorial explicará os vários métodos para importar um módulo do subdiretório em Python. Suponha que temos um arquivo em um subdiretório do diretório do projeto e queremos importar o arquivo e usar seus métodos em nosso código.
Podemos importar o arquivo de um subdiretório em Python, declarando o subdiretório como um pacote. Portanto, Python o tratará como um pacote e poderemos importar o arquivo para aquele diretório. A outra opção pode ser adicionar o subdiretório à variável de ambiente PYTHONPATH e é o caminho onde o Python procura os pacotes para importar por padrão. Os detalhes e o uso desses métodos são fornecidos a seguir.
Importar um módulo do subdiretório em Python usando __init__.py
O arquivo __init__.py é usado para declarar um diretório como um pacote. O arquivo __init__.py evita que o Python misture o diretório com o mesmo nome, portanto, para diferenciar entre um diretório simples e um pacote, o arquivo __init__.py é usado.
O arquivo __init__.py pode estar vazio ou pode ter o código necessário para inicializar o pacote e uma lista dos módulos necessários para serem importados com o pacote; esta lista é representada pela variável __all__.
Depois que o arquivo __init__.py é adicionado ao subdiretório, podemos importar o arquivo do subdiretório como mostrado no seguinte código de exemplo:
import subdirectory.myfile
Importar um módulo do subdiretório em Python usando o método sys.path.insert()
O método alternativo para importar um arquivo do subdiretório é adicionar esse diretório ao PYTHONPATH. O PYTHONPATH é a variável de ambiente que contém o caminho dos diretórios que o Python pesquisa para importar os pacotes.
Portanto, se adicionarmos o subdiretório ao PYTHONPATH usando o método sys.path.insert(), o Python irá primeiro olhar os diretórios em PYTHONPATH e importá-lo de lá.
O método sys.path.insert() irá inserir o subdiretório na variável sys.path ou PYTHONPATH que contém a lista de diretórios que o Python pesquisará para importar o módulo necessário.
O código de exemplo a seguir demonstra como usar o método sys.path.insert() para importar um arquivo do subdiretório:
import myfile
import sys
sys.path.insert(0, "./subdirectory")