Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
tratando de hacer que las rutas funcionen: intento de importación relativa más allá del paquete de nivel superior

no puedo hacer que esto funcione..

Mi estructura es:

 program_name/ __init__.py setup.py src/ __init__.py Process/ __init__.py thefile.py tests/ __init__.py thetest.py

laprueba.py:

 from ..src.Process.thefile.py import sth

Ejecutando: pytest ./tests/thetest.py from program_name da:

ValueError: attempted relative import beyond top-level package

También probé otros enfoques, pero recibo varios errores.

Pero espero que lo anterior funcione.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

ValueError: Intento de importación relativa en no paquete

Indica que está tratando de usar la importación relativa en el módulo, que se usará para paquetes, es decir, para convertirlo en un paquete, agregue __init__.py y llame a thetest.py desde algún archivo fuera del paquete. Ejecutar directamente thetest.py desde el intérprete no funcionará.

Las importaciones relativas requieren que el módulo que las utiliza se importe como módulo de paquete.


Sugerencia 1 :

El directorio de tests actual tiene un archivo __init__.py , pero eso no le permite ejecutarlo como un módulo (a través de shell); para que su importación actual (relativa) funcione, debe importarla en un externo (al paquete) archivo/módulo: creemos un main.py (puede nombrarlo como desee):

 main.py program_name/ __init__.py setup.py src/ __init__.py Process/ __init__.py thefile.py tests/ __init__.py thetest.py

src/Process/ thefile.py :

 s = 'Hello world'

pruebas/ laprueba.py :

 from ..src.Process.thefile import s print s

principal.py :

 from program_name.tests.thetest import s

Ejecutando main.py :

 [nahmed@localhost ~]$ python main.py Hello world

Sugerencia 2 :

Ejecute el archivo justo encima del directorio raíz, es decir, un nivel por encima de program_name/ , de la siguiente manera:

 [nahmed@localhost ~]$ python -m program_name.tests.thetest Hell World

PD las importaciones relativas son para paquetes, no para módulos.

over 4 years ago · Santiago Trujillo Relatório

0

Acabo de resolver un problema similar con un montón de google. Aquí hay dos soluciones sin cambiar el estructurador de archivos existente:

1

La forma de importar un módulo desde la carpeta principal from ..src.Process.thefile.py import sth se denomina "importación relativa".

Solo se admite cuando se inicia como un paquete desde el paquete de nivel superior. En su caso, eso es iniciar la línea de comando desde el directorio que contiene program_name/ y type (para el entorno win)

 python -m program_name.tests.thetest

o simplemente (útil para muchos archivos pytest):

 python -m pytest

2

De lo contrario, cuando intente ejecutar un script solo o desde un paquete que no sea de nivel superior, puede agregar manualmente el directorio a PYTHONPATH en tiempo de ejecución.

 import sys from os import path sys.path.append(path.dirname(path.dirname(path.abspath(__file__)))) from src.Process.thefile import s

Pruebe primero el primero para ver si es compatible con el marco pytest. De lo contrario, el segundo siempre debería resolver el problema.

Referencia ( Cómo arreglar "Intento de importación relativa en un paquete que no es" incluso con __init__.py )

over 4 years ago · Santiago Trujillo Relatório

0

Al importar un archivo, Python solo busca en el directorio actual, el directorio desde el que se ejecuta el script de punto de entrada. puede usar sys.path para incluir diferentes ubicaciones

 import sys sys.path.insert(0, '/path/to/application/app/folder') import thefile
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda