Uso un pip requirements file para mantener una lista de dependencias para mis proyectos.¿Cómo mantener las opciones de instalación de pip en el archivo de requisitos realizado por congelación de pip?
Ahora me encuentro tener que instalar una biblioteca utilizando pip install --install-option='some-setup.py.option'
peropip freeze
no registra estas opciones en su salida, que guardo en mi proyecto de requirements.txt
. Esto causa problemas porque un simple pip install -r requirements.txt
en una máquina nueva instala todas las dependencias sin proporcionar los argumentos requeridos para esta única biblioteca, y he perdido la operación simple de ida y vuelta.
Por lo tanto, mi parte es la pregunta 2:
- ¿Hay una manera de mantener pip instalar opciones en la salida congelación de pepita de alguna manera?
- Si no es así, ¿hay alguna forma de hackear manualmente el archivo de requisitos para agregar la opción de instalación? Estoy de acuerdo con perder la naturaleza de ida y vuelta de
pip freeze
si tengo que hacerlo, y pasar al mantenimiento manual del archivo de requisitos. Revisé el documentation pero no pude ver nada para ayudar.
detalles innecesarios, pero posiblemente interesantes siguen
Quiero instalar pymongo pero without building the C extension por lo que puede utilizarlo de forma asíncrona en una aplicación basada eventlet.
Instalar como se desee y construir requirements.txt:
(test)[email protected]:~/test$ pip install pymongo --install-option='--no_ext'
Downloading/unpacking pymongo
Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded
Running setup.py egg_info for package pymongo
Installing collected packages: pymongo
Running setup.py install for pymongo
Successfully installed pymongo
Cleaning up...
(test)[email protected]:~/test$ pip freeze > requirements.txt
(test)[email protected]:~/test$ cat requirements.txt
bottle==0.10.7
distribute==0.6.10
eventlet==0.9.16
greenlet==0.3.3
lxml==2.3.3
pymongo==2.1.1
simplejson==2.3.2
wsgiref==0.1.2
En virtualenv nuevo, intenta instalar un mismo proyecto de requirements.txt
. pip construye la extensión C para pymongo :(
(test2)[email protected]:~/test2$ pip install -r requirements.txt
...
Downloading/unpacking pymongo==2.1.1 (from -r requirements.txt (line 6))
Downloading pymongo-2.1.1.tar.gz (199Kb): 199Kb downloaded
Running setup.py egg_info for package pymongo
Installing collected packages: pymongo
Running setup.py install for pymongo
building 'bson._cbson' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Ibson -I/usr/include/python2.6 -c bson/_cbsonmodule.c -o build/temp.linux-i686-2.6/bson/_cbsonmodule.o
...
Successfully installed pymongo
Cleaning up...
actualización Issue 271 se abrió contra PIP en abril de 2011 solicitando la posibilidad de especificar por línea --install-option
en requirements.txt. Vota por el problema si tienes el mismo problema.
si agrega manualmente --install-option = '- no_ext' al archivo de requisitos, ¿funciona? - si no, sospecho que necesitarás solicitar que los desarrolladores de pip agreguen esta funcionalidad (¡que es una gran idea!) – d3vid
@ d3vid Eso no funciona, me temo. Ya hay una solicitud de función para esto, abierta en abril de 2011: https://github.com/pypa/pip/issues/271. Por favor agregue su +1 allí también. – Day