make - python-m pip install--upgrade pip
¿Cómo mantener las opciones de instalación de pip en el archivo de requisitos realizado por pip freeze? (2)
Utilizo un archivo de requisitos de pip para mantener una lista de dependencias para mis proyectos.
Ahora tengo que instalar una biblioteca usando pip install --install-option=''some-setup.py.option''
pero pip freeze
no registra estas opciones en su salida, que pip install --install-option=''some-setup.py.option''
mi proyecto. Esto causa problemas porque una simple pip install -r requirements.txt
en una máquina nueva instala todas las dependencias sin proporcionar los argumentos necesarios para esta única biblioteca, y perdí la simple operación de ida y vuelta.
Entonces, mi pregunta de 2 partes es:
- ¿Hay alguna manera de mantener las opciones de instalación de pip en la salida de congelación de pip de alguna manera?
- Si no es así, ¿hay una manera 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 la
pip freeze
depip freeze
si es necesario, y cambiar al mantenimiento manual del archivo de requisitos. He revisado la documentación pero no pude ver nada para ayudar.
Detalles innecesarios pero posiblemente interesantes a continuación.
Quiero instalar pymongo pero sin construir la extensión C para poder usarlo de forma asíncrona en una aplicación basada en eventlet .
Instalar según lo deseado y construir los requisitos.txt:
(test)day@office:~/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)day@office:~/test$ pip freeze > requirements.txt
(test)day@office:~/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 el nuevo virtualenv, intente instalar el mismo proyecto desde requirements.txt
. pip construye la extensión C para pymongo :(
(test2)day@office:~/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...
El número de actualización 271 se abrió contra PIP en abril de 2011 y se solicitó la posibilidad de especificar la --install-option
de --install-option
por línea en --install-option
. Por favor, vote por el problema si tiene el mismo problema.
Desde la versión 7.0 (publicada el 2015-05-21 ), pip tiene la capacidad de analizar --install-option
y --global-option
de los archivos de requisitos. Ahora debería ser posible tener la siguiente línea en tu requirements.txt
:
pymongo==2.1.1 --install-option=''--no_ext''
Es probable que esto sea demasiado ingenuo, pero si está bien con la administración de los requisitos y las opciones correspondientes de forma manual, ¿por qué no mantenerlos como un pequeño script de shell que incluye todo el encantamiento de pip? Solo una solución alternativa hasta que se escuche la solicitud de características :)