txt make create python pip

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 de pip 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''

Más información se puede encontrar here y here .


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 :)