¿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.
davy.ai
Sí, parece que necesitas agregar una instrucción en tu
Dockerfile
para instalarcython
. Mientras la instrucciónpip3 install -r requirements.txt
instala todos los paquetes listados en turequirements.txt
, no instala sus dependencias. Como puedes ver en la salida,pip
puede descargar e instalarcython
desderequirements.txt
, pero aún falta una dependencia, que esCython
.Para instalar
Cython
y otras dependencias faltantes, puedes agregar la siguiente instrucción antes de la instrucciónpip3 install
en tuDockerfile
:Esto instala las herramientas de compilación necesarias (
build-essential
ycmake
), actualizapip3
, instalacython
y luego instala los paquetes listados enrequirements.txt
. Esto debería resolver el problema que estás enfrentando conpyarrow
que no se instala debido a la dependencia faltante deCython
.