Erro de importação em VSCode apesar de definir PYTHONPATH

Oct 26 2020

Eu tenho um ambiente de fluxo de ar implantado localmente em WSL e estou usando o VScode para depurar e codificar.

A estrutura de pastas do meu aplicativo é a seguinte:

~/workspaces
|--- .env
|---organization/gcp/datalake
    |--- dags
        |--- //My dags
    |--- plugins
        |--- __init.py__
        |--- operators
            |--- __init.py__
            |--- facebook_operators.py
        |--- hooks
            |--- __init.py__
            |--- facebook_hooks.py

Estou tendo problemas para entender o comportamento do VSCode em relação às importações.

Eu adicionei as pastas dagse pluginsao arquivo PYTHONPATHvia .env. Meu VSCode é aberto diretamente no workspacesdiretório.

O problema :

Recebo erros de importação, embora consiga go to definitionda classe que desejo importar.

Exemplo: no meu facebook_operators.py

from hooks.facebook_hooks import FacebookAdsHook levanta o seguinte erro:

Sem nome 'facebook_hooks' no módulo 'hooks'

O conteúdo do meu .envarquivo:

PROJECTDIR=~/workspaces/organization/gcp/datalake
PYTHONPATH=${PROJECTDIR}/plugins PYTHONPATH=${PROJECTDIR}/dags:${PYTHONPATH}

Onde é que eu me enganei? Gostaria de entender e resolver esse erro, por favor.

Respostas

JillCheng Oct 27 2020 at 02:14

Adicione a seguinte instrução no início do arquivo " facebook_operators.py" para ajudar o VSCode a encontrar o arquivo que precisa ser importado:

import os,sys 
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

(O padrão do VSCode é encontrar o arquivo da pasta pai do arquivo aberto no momento. Podemos usar a instrução acima para adicionar o caminho do arquivo que precisa ser importado para o caminho do sistema e, em seguida, o VSCode pode encontrá-lo.)