Pip Requisitos.txt --global-option que causa errores de instalación con otros paquetes. "Opción no reconocida"
Tengo dificultades con la configuración de --global-option y --install-option para un archivo require.txt. Al especificar las opciones para una biblioteca, las instalaciones de otras bibliotecas fallan.
Estoy tratando de instalar las bibliotecas de Python "grab" y "pycurl". Necesito especificar que pycurl se instale con la opción: "--with-nss". Puedo replicar el error en un entorno virtual completamente limpio.
En un nuevo entorno virtual con requerimientos.txt que contiene:
grab==0.6.25
pycurl==7.43.0 --install-option='--with-nss'
Luego instalando con:
pip install -r requirements.txt
Los siguientes errores ocurrirán.
Installing collected packages: lxml, pycurl, pytils, six, user-agent, weblib, selection, grab
Running setup.py install for lxml ... done
Running setup.py install for pycurl ... done
Running setup.py install for pytils ... error
Complete output from command /home/ec2-user/test/env/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8GvFzA/pytils/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n
'), __file__, 'exec'))" install --record /tmp/pip-BCG3Wl-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/test/env/include/site/python2.7/pytils --with-nss:
usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: -c --help [cmd1 cmd2 ...]
or: -c --help-commands
or: -c cmd --help
error: option --with-nss not recognized
----------------------------------------
Command "/home/ec2-user/test/env/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-8GvFzA/pytils/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))"
install --record /tmp/pip-BCG3Wl-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/ec2-user/test/env/include/site/python2.7/pytils --with-nss" failed with error code 1 in /tmp/pip-build-8GvF
zA/pytils/
Mi mejor suposición sobre la causa raíz es que la opción "--with-nss" se pasa a todas las bibliotecas que requieren pycurl, y evita la instalación. La instalación de pytils falla aunque la instalación de pycurl funciona bien.
¿Hay alguna forma de pasar solo las opciones de instalación a una biblioteca?
Estoy configurando esto en una instancia de Amazon Elastic Beanstalk, por lo que no hay una opción para ejecutar manualmente cada línea del archivo require.txt: toda la instalación se ejecuta al inicio de la aplicación.
Fuentes para --global-option y --install-option (que creo que no debería hacer esto):¿Cómo mantener las opciones de instalación de pip en el archivo de requisitos realizado por pip freeze? https://github.com/pypa/pip/blob/develop/docs/reference/pip_install.rst#id28