Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

558
Vistas
¿Cómo importar un módulo desde una carpeta diferente?

Tengo un proyecto que quiero estructurar así:

 myproject __init__.py api __init__.py api.py backend __init__.py backend.py models __init__.py some_model.py

Ahora, quiero importar el módulo some_model.py tanto en api.py como en backend.py . ¿Cómo hago esto correctamente?

Lo intenté:

 from models import some_model

pero eso falla con ModuleNotFoundError: No module named 'models' .

También probé:

 from ..models import some_model

lo que me dio ValueError: attempted relative import beyond top-level package .

¿Qué estoy haciendo mal aquí? ¿Cómo puedo importar un archivo de un directorio diferente, que no es un subdirectorio?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En primer lugar, esta declaración de importación:

 from models import some_model

debe tener un espacio de nombres:

 # in myproject/backend/backend.py or myproject/api/api.py from myproject.models import some_model

Luego, deberá obtener el directorio que contiene myproject , llamemos a este /path/to/parent , en la lista sys.path . Puede hacer esto temporalmente configurando una variable de entorno:

 export PYTHONPATH=/path/to/parent

O, preferiblemente, puede hacerlo escribiendo un archivo setup.py e instalando su paquete. Siga la guía de embalaje de PyPA . Después de haber escrito su archivo setup.py , desde el mismo directorio, ejecute esto para configurar las entradas correctas en sys.path :

 pip install --editable .
over 4 years ago · Santiago Trujillo Denunciar

0

Desafortunadamente, Python solo encontrará su archivo si su archivo está en la ruta del sistema. ¡Pero no temas! ¡Hay una manera de evitar esto!

Usando el módulo sys de python, podemos agregar un directorio a la ruta justo mientras Python se está ejecutando, y una vez que Python deje de ejecutarse, lo eliminará de la ruta.

Puedes hacer esto por:

 import sys sys.path.insert(0, '/path/to/application/app/folder') import [file]

Sin embargo, es importante importar sys y configurar la ruta del directorio antes de importar el archivo.

¡Buena suerte!

Jordán.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda