Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

271
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!