Pip ne pas installer la dernière version disponible de pypi (argparse dans ce cas)

Le problème

J'ai travaillé sur certains python projets ces derniers temps et a eu beaucoup de problèmes avec pip de ne pas installer les dernières versions de certaines exigences. Je suis sur osx et et j'ai utilisé brew pour installer Python 2.7.6. Dans le projet sur lequel je travaille, nous avons simplement pip install -r requirements.txt. Dans le cas actuel, j'ai eu besoin d'installer argparse==1.2.1. C'est la dernière version montré sur le site pypi

Voici ma sortie

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

J'ai eu des problèmes similaires avec différents types d'exigences telles que la matplotlib lequel j'ai installé manuellement comme on le voit ici.

Comme vous pouvez le voir, pip sur mon mac uniquement a ceux argparse 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

Tente de résoudre

J'ai essayé de réinstaller python avec brew reinstall python, puis aussi essayé de réinstaller tous mes installé les paquets python avec certains xargs magie: pip freeze | xargs -I {} sudo pip install {} --upgrade --force-reinstall.

Tandis que d'essayer de tout réinstaller, j'ai eu du mal avec la plupart des paquets: error: invalid command 'egg_info'. J'ai compris que j'avais un vieux setuptools donc je pip install --upgrade setuptools et je pouvais maintenant tout réinstaller mais toujours le même problème avec argparse. Toujours le même problème avec argparse.

J'ai demandé à un ami avec un fraîchement installé osx pour pip install argparse et il a eu 1.1 j'ai Donc l'installation d'un precise32 vagrant box pour un nettoyage ubuntu installer avec python-dev + libevent-dev et n'a eu aucune difficulté à tous de l'installation d' argparse==1.2.1.

Correctif temporaire

De continuer à travailler sur le projet, j'ai installé argparse 1.1 sur osx et il semble bien fonctionner atm pour ce que je suis en train de travailler sur.

Questions

Je ne suis pas très bon avec pypi (encore), mais est-il une raison pourquoi je ne reçois pas les dernières versions indiqué sur pypi? Ressemble pas à toutes les libs sur pypi sont disponible pour osx. Est-il un moyen de savoir la version de la disponibilité pour les différents os?

Edit: la solution à l'intérieur

argparse 1.1 semble être le même que 1.2.1, comme le montre cette sortie

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

J'ai essayé d'utiliser --allow-external sur osx, mais n'a pas réalisé qu'il avait besoin du nom de l'emballage de nouveau.

sudo pip install argparse --allow-external argparse --upgrade

et 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

Comme l'a souligné Pierre, dernière version de pip default to disallowing externally hosted files.

  • Ce n' pip install -vv --no-install argparse dire?
  • argparse est livré en standard dans Python2.7. Alors que le pypy numéro de version est 1.2.1, sa dernière modification date était 2011. Il n'est donc pas à l'avance de la dernière version de Python.
  • mon argparse.__version__ retourne '1.1' en Python 2.7.6, ne sais pas si c'est le même numéro de version si
  • Ne vous inquiétez pas à ce sujet 1.1. Depuis, il fait partie de la bibliothèque standard que le numéro ne change pas, plus.
  • pip install -vv --no-install argparse dit: DEPRECATION: '--no-install' and '--no-download are deprecated. See https://github.com/pypa/pip/issues/906. Requirement already satisfied (use --upgrade to upgrade): argparse in /usr/local/lib/python2.7/site-packages j'ai testé avec un vagabond et même si la version de argparse installé est 1.2.1, argparse.__version__ rendements 1.1.
InformationsquelleAutor GabLeRoux | 2014-02-19