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 archivos de Python desde dentro de un cuaderno cuando los archivos están en otro directorio?

Tengo una estructura de carpetas que se ve así:

proyecto/
    | Notebooks/
        | Notebook1.ipynb
        | Notebook2.ipynb
src/
    | __init__.py
    | utils.py

Y en mis cuadernos quiero ejecutar:

from utils import my_function

Pero, por supuesto, eso resulta en el error:

ModuleNotFoundError: No module named 'utils'

Hasta ahora, encontré que podría hacer esto ejecutando primero:

sys.path.insert(0, '../src/')

Pero eso está rompiendo algunas funcionalidades en VS code.

¿Cuál es la forma correcta de hacer esto?


ACTUALIZACIÓN:

Estoy descubriendo que al ejecutar esto en mis cuadernos:

ruta_paquete = os.path.abspath(os.path.join('..'))
if ruta_paquete not in sys.path:
    sys.path.append(ruta_paquete)

Y luego importar mi código como:

from src.utils import *

Funciona mucho mejor. Pero aún estaría feliz de aprender cualquier enfoque “mejor”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La forma recomendada de importar módulos de un paquete separado dentro de tu proyecto es configurar correctamente la variable de entorno PYTHONPATH. Esto permite que Python acceda e importe módulos desde cualquier directorio, no solo desde el directorio de trabajo actual.

    Una forma de establecer la variable PYTHONPATH para tu proyecto es incluir la siguiente línea al inicio de tus scripts:

    import sys
    sys.path.append('/path/to/your/project')
    

    Esto permitirá que Python importe módulos desde cualquier subdirectorio dentro de tu proyecto.

    Alternativamente, podrías usar entornos virtuales para aislar dependencias y evitar conflictos entre diferentes proyectos. Esto puede ser especialmente útil cuando trabajas en proyectos grandes o colaboras con otros desarrolladores.

    Para crear un entorno virtual para tu proyecto, utiliza el siguiente comando:

    python3 -m venv /path/to/your/project/venv
    

    Esto creará un nuevo subdirectorio llamado “venv” dentro del directorio de tu proyecto e instalará una versión limpia de Python y pip en él. Luego, puedes activar el entorno virtual ejecutando:

    source /path/to/your/project/venv/bin/activate
    

    Esto modificará la variable de entorno PATH del sistema para incluir primero el directorio “bin” del entorno virtual, permitiendo que Python use las versiones correctas de cualquier paquete instalado.

    Una vez activado el entorno virtual, puedes instalar cualquier paquete necesario utilizando pip:

    pip install nombre-paquete
    

    Y luego importarlos en tus scripts utilizando la sintaxis estándar:

    import nombre-paquete
    

    Este enfoque asegura que las dependencias de tu proyecto estén aisladas de otros proyectos y facilita la administración de múltiples proyectos con diferentes dependencias en la misma máquina.

Comments are closed.