es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué falla la instalación de pyarrow con el error “cython no encontrado” cuando cython está incluido en requirements.txt?

Tengo un archivo Docker en el que una de las instrucciones es:

RUN pip3 install -r requirements.txt

Y en mi archivo requirements.txt:

...
uwsgi==2.0.19.1
cython==0.29
dependency-injector==4.37.0
pyyaml==6.0
apscheduler==3.7.0
pyarrow==5.0.0
...

Cuando ejecuto la construcción de Docker, veo que se instala Cython, pero pyarrow aún falla. Encontré este enlace – https://github.com/apache/arrow/issues/2163 – que menciona que se requieren cmake y cython, y lo agregué en mi archivo requirements.txt, pero aún no ayuda. ¿Debo agregar declaraciones adicionales en mi archivo Dockerfile para instalar cython?

Salida de la construcción del archivo Dockerfile:


Collecting cython==0.29 (from -r requirements.txt (line 8))
Downloading https://files.pythonhosted.org/packages/64/3f/cac281f3f019b825bbc03fa8cb7eb03d9c355f4aa9eef978279a4966cb21/Cython-0.29-cp36-cp36m-manylinux1_x86_64.whl (2.1MB)
...
Collecting pyarrow==5.0.0 (from -r requirements.txt (line 12))
Downloading https://files.pythonhosted.org/packages/68/7c/0e38bfb949ededdd9b648d54cba47972835704543d7409d6f853504d0581/pyarrow-5.0.0.tar.gz (739kB)
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-395casa1/pyarrow/setup.py", line 39, in <module>
from Cython.Distutils import build_ext as _build_ext
ModuleNotFoundError: No module named 'Cython'

Python 3.6 está instalado en esta imagen base.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, parece que necesitas agregar una instrucción en tu Dockerfile para instalar cython. Mientras la instrucción pip3 install -r requirements.txt instala todos los paquetes listados en tu requirements.txt, no instala sus dependencias. Como puedes ver en la salida, pip puede descargar e instalar cython desde requirements.txt, pero aún falta una dependencia, que es Cython.

    Para instalar Cython y otras dependencias faltantes, puedes agregar la siguiente instrucción antes de la instrucción pip3 install en tu Dockerfile:

    RUN apt-get update && \
        apt-get install -y \
            build-essential \
            cmake && \
        pip3 install --upgrade pip && \
        pip3 install cython && \
        pip3 install -r requirements.txt
    

    Esto instala las herramientas de compilación necesarias (build-essential y cmake), actualiza pip3, instala cython y luego instala los paquetes listados en requirements.txt. Esto debería resolver el problema que estás enfrentando con pyarrow que no se instala debido a la dependencia faltante de Cython.

Comments are closed.