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

759
Vistas
¿Cómo puedo solucionar el error de importación relativo: "sin paquete principal conocido"?

Llevo un par de días intentando solucionar el error relativo de importación en mi proyecto sin éxito. Tengo el siguiente árbol de proyecto:

 proj | |---__init__.py | |---lib | |---__init__.py | |---func.py | |---src | |---main.py
  • el __init__.py es un archivo vacío.

  • el func.py contiene una función de impresión:

     def hello_func(): print("Hello !!!")
  • el main.py :

     from ..lib import * hello_func()

y cuando lo ejecuto recibo este error:

 ImportError: attempted relative import with no known parent package

alguien se enfrento al mismo problema?

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

0

Quiero dar la solución primero. Puede intentar usar from lib import * y ejecutar /proj/__init__.py , funciona bien para mí.
El motivo del error no known parent package es que ejecuta /proj/src/main.py , que manifiesta que /proj/src es el paquete raíz. Básicamente, un paquete es para importar, no para ejecutar. Es decir, no debe ejecutar el código python en un paquete, sino que debe importarlo.

over 4 years ago · Santiago Trujillo Denunciar

0

from ..lib import * a python que suba al directorio principal de main.py, allí encuentre lib e importe todo desde allí, es decir, desde el archivo de inicio vacío, por lo que tampoco sucederá nada. Tienes que cambiar esto a from ..lib import func; func.hello_func() . Esto todavía soplará con el mismo error. El error se debe a que Python no piensa en términos de directorios exactamente como dije anteriormente. Python solo buscará paquetes en el directorio de trabajo desde el que lo inició (y en la lista sys.path, pero no se meta con eso). Obtiene este error porque ejecuta su secuencia de comandos directamente desde src, por lo que para python, la raíz del "sistema de archivos" es src, no hay un paquete principal conocido (para python) (carpeta). Este es un antipatrón en python (ejecutando scripts desde su directorio). Lo que deberías estar haciendo en su lugar es

 $ cd proj/.. $ python -m proj.src.main # note no .py

Esto hace que la carpeta proj sea la "raíz" del sistema de archivos (para python) y python detectará todos los paquetes allí: src.main le dice a python que main.py es parte del paquete src que se detecta así como lib ( ya que son hijos directos de proj) y cuando realiza una importación relativa como en ..lib python ya conoce el paquete lib.

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