Error de importación en VSCode a pesar de configurar PYTHONPATH

Oct 26 2020

Tengo un entorno de flujo de aire implementado localmente en WSL y estoy usando VScode para depurar y codificar.

La estructura de la carpeta de mi aplicación es la siguiente:

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

Tengo problemas para comprender el comportamiento de VSCode con respecto a las importaciones.

Agregué las carpetas dagsy pluginsal archivo PYTHONPATHvia .env. Mi VSCode se abre directamente en el workspacesdirectorio.

El problema :

Recibo errores de importación, aunque puedo con éxito go to definitionde la clase que quiero importar.

Ejemplo: en mi facebook_operators.py

from hooks.facebook_hooks import FacebookAdsHook genera el siguiente error:

Sin nombre 'facebook_hooks' en el módulo 'hooks'

El contenido de mi .envarchivo:

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

¿Qué hice mal? Me gustaría entender y resolver este error por favor.

Respuestas

JillCheng Oct 27 2020 at 02:14

Agregue la siguiente declaración al principio del archivo " facebook_operators.py" para ayudar a VSCode a encontrar el archivo que debe importarse:

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

(VSCode busca por defecto el archivo en la carpeta principal del archivo abierto actualmente. Podemos usar la declaración anterior para agregar la ruta del archivo que debe importarse a la ruta del sistema, y ​​luego VSCode puede encontrarla).