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

305
Vistas
Flask CLI lanza 'OSError: [Errno 8] Exec format error' cuando se ejecuta a través de docker-compose

Estoy ejecutando una aplicación Flask con un script personalizado . O tratando de hacerlo, de todos modos.

Estoy en Windows 10 y la aplicación debería ejecutarse en un contenedor Docker de Linux con el comando:

 docker-compose up api

Docker-compose es version 1.23.2 . En el dockerfile, el servicio api se ejecuta a través del comando:

 command: python manage.py run --host "0.0.0.0" --with-threads

Mientras intenta iniciarse, veo la excepción.

 OSError: [Errno 8] Exec format error: '/api/manage.py'

Inicialmente pensé que serían los temidos finales de línea de Windows, ven por mí una vez más, pero ejecutar dos2unix en todos mis archivos fuente no ha resuelto el problema.

¿Cómo puedo evitar este error?


gestionar.py

 import click from flask.cli import FlaskGroup from my_app_api import create_app def create_my_app(info): return create_app() @click.group(cls=FlaskGroup, create_app=create_my_app) def cli(): pass if __name__ == "__main__": cli()

Rastreo completo

 api_1 | Traceback (most recent call last): api_1 | File "manage.py", line 22, in <module> api_1 | cli() api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__ api_1 | return self.main(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 380, in main api_1 | return AppGroup.main(self, *args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 717, in main api_1 | rv = self.invoke(ctx) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1137, in invoke api_1 | return _process_result(sub_ctx.command.invoke(sub_ctx)) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 956, in invoke api_1 | return ctx.invoke(self.callback, **ctx.params) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 555, in invoke api_1 | return callback(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/decorators.py", line 64, in new_func api_1 | return ctx.invoke(f, obj, *args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 555, in invoke api_1 | return callback(*args, **kwargs) api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 438, in run_command api_1 | use_debugger=debugger, threaded=with_threads) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/serving.py", line 988, in run_simple api_1 | run_with_reloader(inner, extra_files, reloader_interval, reloader_type) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 332, in run_with_reloader api_1 | sys.exit(reloader.restart_with_reloader()) api_1 | File "/usr/local/lib/python3.6/site-packages/werkzeug/_reloader.py", line 176, in restart_with_reloader api_1 | exit_code = subprocess.call(args, env=new_environ, close_fds=False) api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 287, in call api_1 | with Popen(*popenargs, **kwargs) as p: api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 729, in __init__ api_1 | restore_signals, start_new_session) api_1 | File "/usr/local/lib/python3.6/subprocess.py", line 1364, in _execute_child api_1 | raise child_exception_type(errno_num, err_msg, err_filename) api_1 | OSError: [Errno 8] Exec format error: '/api/manage.py'
over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Este es un nuevo comportamiento en Werkzeug 0.15. La degradación a Werkzeug 0.14.1 puede funcionar, pero 0.14 ya no es compatible, por lo que será mejor que corrija el problema con su archivo como se describe en las otras respuestas.

over 4 years ago · Santiago Trujillo Denunciar

0

La respuesta de @CristiFati me funcionó con 1 paso adicional:

También tuve que corregir el EOL de \r\n a \n .


Lo siento, no tengo suficientes puntos para agregar un comentario y tengo que abrir una nueva respuesta ...

over 4 years ago · Santiago Trujillo Denunciar

0

Si deshabilita el modo de depuración (no pase debug=True o configure FLASK_DEBUG=0 ), el recargador no se utilizará y, por lo tanto, este problema no ocurrirá. La compensación es que ya no tienes el recargador.

 if __name__ == "__main__": connexion_app.run(host="0.0.0.0", port=constants.API_PORT, debug=True)

Es preferible arreglar esto asegurándose de que los archivos marcados como ejecutables tengan una línea de interpretación, como #!/usr/bin/env python3 (de https://stackoverflow.com/a/55272071 ).

over 4 years ago · Santiago Trujillo Denunciar

0

Werkzeug==0.15.4 tiene esta pregunta。

 pip install --user Werkzeug==0.16
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