1683 votos

Instalación de una versión específica de un paquete con pip

Estoy tratando de instalar la versión 1.2.2 de MySQL_python, usando un virtualenv nuevo creado con la opción --no-site-packages. La versión actual mostrada en PyPi es 1.2.3. ¿Hay alguna forma de instalar la versión anterior? He intentado:

pip install MySQL_python==1.2.2

sin embargo, al instalarlo, sigue mostrando MySQL_python-1.2.3-py2.6.egg-info en los site packages. ¿Es esto un problema específico de este paquete, o estoy haciendo algo mal?

24 votos

Gracias por la pista, esto me funcionó para instalar una versión antigua de openpyxl a través de pip install MySQL_python==1.8.9

4 votos

Sí, esto también funcionó para pandas, gracias: pip install -Iv pandas==0.12.0

1 votos

Me funcionó también: pip install xvfbwrapper==0.2.4

1182voto

Mahmoud Abdelkader Puntos 5622

TL;DR:

Actualización hasta 2022-28-12:

pip install --force-reinstall -v

Por ejemplo: pip install --force-reinstall -v "MySQL_python==1.2.2"

Lo que significan estas opciones:

  • --force-reinstall es una opción para reinstalar todos los paquetes incluso si ya están actualizados.
  • -v es para verboso. Puedes combinar para aún más verbosidad (es decir, -vv) hasta 3 veces (por ejemplo, --force-reinstall -vvv).

Gracias a @Peter por resaltar esto (¡y parece que el contexto de la pregunta se ha ampliado dado el momento en que se hizo la pregunta!), la documentación para Python discute una advertencia al usar -I, en que puede romper tu instalación si se instaló con un administrador de paquetes diferente o si tu paquete es/fue una versión diferente.


Respuesta original:

  • pip install -Iv (es decir, pip install -Iv MySQL_python==1.2.2)

Lo que significan estas opciones:

  • -I representa --ignore-installed que ignorará los paquetes instalados, sobrescribiéndolos.
  • -v es para verboso. Puedes combinar para aún más verbosidad (es decir, -vv) hasta 3 veces (por ejemplo, -Ivvv).

Para más información, consulta pip install --help

Primero, veo dos problemas con lo que estás intentando hacer. Dado que ya tienes una versión instalada, deberías desinstalar el controlador existente actual o usar pip install -I MySQL_python==1.2.2

Sin embargo, pronto descubrirás que esto no funciona. Si miras el registro de instalación de pip, o si haces un pip install -Iv MySQL_python==1.2.2 verás que el enlace URL de PyPI no funciona para MySQL_python v1.2.2. Puedes verificar esto aquí: http://pypi.python.org/pypi/MySQL-python/1.2.2

El enlace de descarga da error 404 y los enlaces URL alternativos se redirigen infinitamente debido a la reciente actualización de sourceforge.net y la URL obsoleta de PyPI.

Así que para instalar correctamente el controlador, puedes seguir estos pasos:

pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download

1 votos

No debería haber problema al tener múltiples versiones, ese es el punto de crear nuevas carpetas para cada versión y usar archivos .pth.

3 votos

Esto instala la versión correcta, por lo que es la respuesta a esta pregunta - gracias por tu ayuda. Ahora me encuentro con otro problema: "error: el comando '/usr/bin/gcc-4.2' falló con el estado de salida 1" al construir la extensión '_mysql'. Sé que tengo GCC y la instalación de MySQL_python 1.2.3 se realiza sin problemas. ¿Alguien más ha visto este problema, específicamente con la versión 1.2.2?

0 votos

Haz otra pregunta por favor y publica el mensaje de error que estás obteniendo de pip.

664voto

user1978556 Puntos 5767

Incluso puedes usar un rango de versiones con el comando pip install. Algo como esto:

pip install 'stevedore>=1.3.0,<1.4.0'

Y si el paquete ya está instalado y quieres degradarlo, agrega --force-reinstall de esta manera:

pip install 'stevedore>=1.3.0,<1.4.0' --force-reinstall

149 votos

$ pip instalar 'xkcdpass==1.2.5' --force-reinstall

1 votos

¡Perfecto! Se ejecutó en Ubuntu 15.04 y reemplazó (automáticamente) una biblioteca existente con la versión especificada. ¡Resolvió todos mis problemas!

2 votos

Solo voy a mencionar que para Python 2 tuve que usar comillas dobles " en lugar de '

183voto

Srikar Appal Puntos 26892

Una forma, como se sugiere en este post, es mencionar la versión en pip de la siguiente manera:

pip install -Iv MySQL_python==1.2.2

es decir, utilizar == y mencionar el número de versión para instalar solo esa versión. -I, --ignore-installed ignora los paquetes ya instalados.

2 votos

¡Cuidado! Tuve la experiencia de que esto instaló las diferentes versiones juntas ¡También curiosamente, pip list no estaba al tanto de eso, pero conda list sí (y mostraba las diferentes versiones de los paquetes)! También confundió por completo a Pycharm.

88voto

Zach Weg Puntos 1115

Para instalar una versión específica del paquete de Python, ya sea la primera vez, una actualización o una versión anterior, utiliza:

pip install --force-reinstall MySQL_python==1.2.4

La versión 1.2.2 de MySQL_python no está disponible, así que utilicé una versión diferente. Para ver todas las versiones disponibles del paquete desde un índice, excluye la versión:

pip install MySQL_python==

4 votos

Con pip 10.0.1 esta es la única solución que funciona. La opción "-I" en realidad reinstala la versión anterior.

40voto

dappawit Puntos 3782

Creo que si ya tienes un paquete instalado, pip no lo sobrescribirá con otra versión. Usa -I para ignorar las versiones anteriores.

1 votos

No lo tengo instalado - usando un nuevo virtualenv creado con la opción --no-site-packages

2 votos

Está bien, entonces solicitas la versión 1.2.2 y aún se instala la 1.2.3, ¿y nada más se instaló? La sintaxis que utilizaste es correcta para obtener versiones específicas.

0 votos

"usando un servidor virtual nuevo creado con la opción --no-site-packages"; es posible que necesites preceder esto con el comando unset PYTHONPATH para evitar que pip detecte tus librerías preinstaladas.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X