es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo importar un método de un paquete a otro para la estructura de directorio a continuación? Directory structure: Estructura de directorio:

A continuación se muestra la estructura de directorios donde tengo problemas para importar módulos.

.
├── A
│   └── a.py
└── B
    └── C
        └── b.py

Digamos que hay un método foo() en B/C/b.py que se debe importar en A/a.py.

Sin embargo, cuando intento importar foo() como se muestra a continuación:

# A/a.py

from B.C import foo

Recibo un error que dice:

unable to import 'B.C'.

Una forma alternativa que intenté fue usar importaciones relativas de la siguiente manera:

# A/a.py

from ..B.C import foo

Pero de nuevo, obtengo un error que dice:

Attempted relative import beyond top-level package.

¿Cómo debo importar exactamente foo() desde B/C/b.py en A/a.py?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para importar foo() desde B/C/b.py en A/a.py, puedes añadir el directorio padre de A a la lista sys.path en a.py. Esto se puede hacer utilizando el siguiente código al comienzo de a.py:

    import sys
    import os
    
    # añade el directorio padre de A a sys.path
    sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
    
    # ahora importa foo desde B.C
    from B.C import foo
    

    Este código primero agrega el directorio que contiene A a la lista sys.path utilizando os.path.abspath y os.path.join. Luego importa foo desde B.C. Este método debería funcionar para cualquier nivel de subdirectorios dentro del mismo directorio padre.

Comments are closed.