python - paquetes - instalar pip en windows 10
¿Cómo especificar el orden de instalación para python pip? (9)
Pymongo requiere setuptools> = 0.6c9
¿Cómo lo sabes? Requiere compilar o instalar? Usted no dice qué versión de Pymongo estaba tratando de instalar, pero mirando el archivo setup.py
para la versión actual (3.2.2) no hay ninguna especificación de lo que Pymongo requiere para ejecutar setup.py
( setup_requires
) ni lo que requiere para install ( install_requires
). Sin dicha información, pip no puede garantizar una versión específica de las herramientas de configuración. Si Pymongo requiere una versión específica de setuptools para ejecutar su setup.py
(en lugar de requerir setuptools para ejecutar setup
función de setup
), el otro problema es que hasta hace poco no había forma de especificar esto. Ahora hay una especificación - PEP 518 - Especificación de los requisitos mínimos del sistema de compilación para los proyectos de Python , que deben implementarse brevemente en pip - Implementar el soporte PEP 518 # 3691 .
En cuanto al orden de instalación, esto se corrigió en la pipa 6.1.0;
Desde la instalación de pip - section de orden de instalación de la documentación de pip:
A partir de v6.1.0, pip instala dependencias antes de sus dependientes, es decir, en "orden topológico". Este es el único compromiso que pip hace actualmente relacionado con el orden.
Y después:
Antes de v6.1.0, pip no asumió ningún compromiso sobre el orden de instalación.
Sin embargo, sin una especificación adecuada de los requisitos por parte de Pymongo tampoco ayudará.
Estoy trabajando con fabric (0.9.4) + pip (0.8.2) y necesito instalar algunos módulos de python para múltiples servidores. Todos los servidores tienen una versión anterior de setuptools (0.6c8) que debe actualizarse para el módulo pymongo. Pymongo requiere setuptools> = 0.6c9.
Mi problema es que pip inicia la instalación con pymongo en lugar de setuptools, lo que hace que pip se detenga. Mover el orden del módulo en el archivo de requisitos no parece ayudar.
requirements.txt:
setuptools>=0.6c9
pymongo==1.9
simplejson==2.1.3
¿Hay alguna manera de especificar el orden de instalación para pip ya que no parece que lo haga correctamente por sí mismo?
Esto se puede resolver con dos archivos de requisitos separados, pero sería bueno si no tuviera que mantener varios archivos de requisitos ahora o en el futuro.
El problema persiste con pip 0.8.3.
Este es un truco tonto, pero podría funcionar. Escriba un script bash que lea de su archivo de requisitos línea por línea y ejecute el comando pip en él.
#!/bin/bash
for line in $(cat requirements.txt)
do
pip install $line -E /path/to/virtualenv
done
Lamentablemente, la sugerencia de actualización no funcionará. Si lees los otros detalles en https://github.com/pypa/pip/issues/24 , verás por qué
pip compilará todos los paquetes primero, antes de intentar instalarlos. Entonces, con un archivo de requisitos como el siguiente
numpy==1.7.1
scipy==0.13.2
statsmodels==0.5.0
La compilación de modelos de estadísticas fallará con la siguiente declaración
ImportError: statsmodels requires numpy
La solución dada para llamar manualmente a pip para cada entrada en el archivo de requisitos (mediante un script de shell) parece ser la única solución actual.
Lo siento, mi primera respuesta fue incorrecta, porque tenía setuptools> = 0.6c9.
Parece que no es posible porque setup.py de pymongo necesita setuptools> = 0.6c9, pero pip solo ha descargado setuptools> = 0.6c9, y aún no está instalado.
Alguien discutió al respecto en el problema que señalé antes.
Hace algunas semanas tuve un problema mío: no ejecute egg_info
en cada paquete de la lista de requisitos antes de instalar los paquetes anteriores .
Perdón por el ruido.
Primera respuesta:
Actualice su pip a la versión 0.8.3, tiene una https://github.com/pypa/pip/issues/24 .
Ahora si actualiza todo, funciona :-)
Vea las noticias aquí: http://www.pip-installer.org/en/0.8.3/news.html
Para permitir todo tipo de entradas (por ejemplo, paquetes de repositorios git) en requirements.txt debe usar el siguiente conjunto de comandos
cat requirements.txt | xargs -n 1 -L 1 pip install
-n 1 y -L 1 son necesarias para instalar paquetes uno por uno y tratar cada línea en el archivo requirements.txt como un elemento separado.
Puedes simplemente usar:
cat requirements.txt | xargs pip install
Si tiene comentarios en su archivo de requisitos, querrá usar:
grep -v "^#" requirements.txt | xargs pip install
Siguiendo con la solución de @ lukasrms, tuve que hacer esto para que pip instale mis requisitos uno por vez:
cat requirements.txt | xargs -n 1 pip install
Terminé ejecutando pip dentro de virtualenv en lugar de usar "pip -E" porque con -Epip todavía se podían ver los paquetes de sitios de los servidores y eso obviamente estropeó algunas de las instalaciones.
También tuve problemas con servidores sin virtualenvs. Incluso si instalé setuptools con un comando pip separado, pymongo rechazaría ser instalado.
Resolví esto instalando setuptools por separado con easy_install, ya que parece ser un problema entre pip y setuptools.
fragmentos de fabfile.py:
env.activate = "source %s/bin/activate" % virtualenv_path
_virtualenv("easy_install -U setuptools")
_virtualenv("pip install -r requirements.txt")
def _virtualenv(command)
if env.virtualenv:
sudo(env.activate + "&&" + command)
else:
sudo(command)
Tuve estos problemas con pip 0.8.3 y 0.8.2.