example - argparse python 3 install
Pip no instala la última versión disponible de pypi(argparse en este caso) (2)
Aquí está el comando que utilicé para instalar argparse usando pip 1.5.4:
pip install --allow-all-external argparse==1.2.1
El problema
Trabajé en algunos proyectos de Python últimamente y tuve muchos problemas con pip
no para instalar las últimas versiones de algunos requisitos. Estoy en osx
y utilicé brew para instalar Python 2.7.6
. En el proyecto en el que estoy trabajando, simplemente pip install -r requirements.txt
. En el caso actual, necesitaba instalar argparse==1.2.1
. Esta es la última versión real que se muestra en el sitio web de pypi
Aquí está mi salida
Downloading/unpacking argparse==1.2.1 (from -r requirements.txt (line 4))
Could not find a version that satisfies the requirement argparse==1.2.1 (from -r requirements.txt (line 4)) (from versions: 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.9.1, 1.0.1, 1.0, 1.1)
Some externally hosted files were ignored (use --allow-external to allow).
Cleaning up...
No distributions matching the version for argparse==1.2.1 (from -r requirements.txt (line 4))
Tuve problemas similares con diferentes tipos de requisitos, como matplotlib
que instalé manualmente como se ve here .
Como puedes ver, pip en mi mac solo tiene esas versiones argparse: 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 0.8.0, 0.9.0, 0.9.1, 1.0.1, 1.0, 1.1
Intentos de arreglar
Intenté volver a instalar python con brew reinstall python
, luego también intenté reinstalar todos mis paquetes de python instalados con algo de magia xargs: pip freeze | xargs -I {} sudo pip install {} --upgrade --force-reinstall
pip freeze | xargs -I {} sudo pip install {} --upgrade --force-reinstall
.
Al intentar reinstalar todo, tuve problemas con la mayoría de los paquetes: error: invalid command ''egg_info''
. Me di cuenta de que tenía setuptools
antiguas, así que pip install --upgrade setuptools
y ahora podría reinstalar todo, pero aún así, el mismo problema con argparse
. Sigue con el mismo problema con argparse.
Le pedí a un amigo con un osx recién instalado que pip install argparse
y él obtuvo 1.1
Así que configuré una caja precise32
para una instalación limpia de ubuntu con python-dev
+ libevent-dev
y no tuve ningún problema en absoluto al instalar argparse==1.2.1
.
Arreglo de temperatura
Para continuar trabajando en el proyecto, instalé argparse 1.1 en osx y parece que funciona bien atm para lo que estoy trabajando.
Preguntas
No soy muy bueno con pypi (todavía), pero ¿hay alguna razón por la que no obtenga las últimas versiones que se muestran en pypi? Parece que no todas las librerías en pypi están disponibles para osx. ¿Hay alguna manera de saber la disponibilidad de versiones para diferentes sistemas operativos?
Edición: solución dentro
argparse 1.1
parece ser lo mismo que 1.2.1
como se muestra en esta salida
vagrant@precise32:~$ python
Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import argparse
>>> argparse.__version__
''1.1''
>>> quit()
vagrant@precise32:~$ pip freeze | grep argparse
argparse==1.2.1
Intenté usar --allow-external
en osx, pero no me di cuenta de que necesitaba el nombre del paquete otra vez.
sudo pip install argparse --allow-external argparse --upgrade
y voilá :)
argparse an externally hosted file and may be unreliable
Downloading/unpacking argparse from http://argparse.googlecode.com/files/argparse-1.2.1.tar.gz#md5=2fbef8cb61e506c706957ab6e135840c
Downloading argparse-1.2.1.tar.gz (69kB): 69kB downloaded
Como señaló Peter, la última versión de pip por default to disallowing externally hosted files
.
Creo que esta línea es la clave:
Algunos archivos alojados externamente fueron ignorados (use --allow-external para permitir).
Cuando instalo argparse aqui me sale
Está instalando un archivo alojado externamente. Las versiones futuras de pip por defecto deshabilitarán los archivos alojados externamente.
Descargando argparse-1.2.1.tar.gz (69kB): 69kB descargado
Así que tienes una versión más nueva de pip que no permite archivos externos alojados de forma predeterminada