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

706
Visualizações
FileNotFoundError: [Errno 2] No existe tal archivo o directorio + os.execv

Estoy creando un script contenedor para ejecutar mis programas de python. La lógica es como:

  1. Instalaré todos mis módulos requeridos en un contenedor docker
  2. Tire del contenedor y ejecute el script, para que cualquiera pueda ejecutar mis scripts sin preocuparse por los módulos dependientes.
  3. Creé un script contenedor que será llamado para ejecutar el programa deseado

Este es mi script contenedor:

 import os import sys import argparse parse = argparse.ArgumentParser() parse.add_argument('command', help="give datacenter name") parse.add_argument('args', nargs=argparse.REMAINDER) parse_arguments = parse.parse_args() ''' Co-relate to the command and corresponding scripts to trigger ''' scripts = { 'verify' : '/path/verify.py' } if __name__ == '__main__': if parse_arguments.command not in scripts: print('These are the available scripts to run:') print('\n'.join(sorted(scripts.keys()))) else: os.execv(scripts.get(parse_arguments.command), [scripts.get(parse_arguments.command)] + parse_arguments.args) .

Estoy ejecutando esto como,

 $ docker run -it --rm --net host run-script verify --listenv tpc1 Traceback (most recent call last): File "/path/runme.py", line 28, in <module> os.execv(scripts.get(parse_arguments.command), [scripts.get(parse_arguments.command)] + parse_arguments.args) FileNotFoundError: [Errno 2] No such file or directory

Mi imagen Docker es run-script

Si ejecuto el mismo código desde mi máquina local, funciona. pero dentro del contenedor muestra que este archivo no encuentra el error.

¿Puede alguien ayudarme con esto?

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

0

El primer argumento pasado a sys.argv es la ruta al archivo en ejecución, aquí /path/runme.py . El archivo se encuentra cuando se ejecuta desde su máquina local, pero probablemente no en el contenedor de la ventana acoplable (no estoy seguro de por qué).

Intente establecer el parámetro prog al instanciar su ArgParser, algo como:

 parse = argparse.ArgumentParser(prog="run_me.py")
over 4 years ago · Santiago Trujillo Relatório

0

Logré resolver este problema. El problema fue principalmente con el tinglado que proporcioné. Entonces, cuando estaba ejecutando el script en el contenedor docker, estaba verificando para ejecutar el código desde la ubicación shebang.

Diría que es un error de mi parte, FileNotFoundError no me estaba dando una pista de shebang. Finalmente, lo descubrí.

@ olinox14: gracias por su actualización, el parámetro "prog" en argparse me ayudó a generar un mejor mensaje de ayuda con el nombre del script en el contenedor de la ventana acoplable, en lugar de la ruta completa dentro del contenedor de la ventana acoplable.

over 4 years ago · Santiago Trujillo Relatório

0

os.execv(program, args) de forma predeterminada no busca el programa (primer argumento) en función de la variable de entorno PATH. os.execvp lo hace.

De la documentación de os.execv :

os.execv(path, args)

Las variantes que incluyen una "p" cerca del final (execlp(), execlpe(), execvp() y execvpe()) utilizarán la variable de entorno PATH para ubicar el archivo del programa.

Entonces, os.execvp o proporcione la ruta completa al programa que se ejecutará en os.execv .

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