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 dansPython2.7
. Alors que lepypy
numéro de version est1.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__ rendements1.1
.
Vous devez vous connecter pour publier un commentaire.
Je pense que cette ligne est la clé:
Quand j'ai installer argparse ici, je reçois
Si vous avez une version récente de pip qui refuse hébergé en externe par défaut les fichiers
pip 1.5.2 from /usr/local/Cellar/python/2.7.6/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.5.2-py2.7.egg (python 2.7)
en Effet, j'ai toujours ce--allow-external
message. Je suppose que certains développeurs auront besoin de déplacer leurs sources de pypiVoici la commande que j'ai utilisé pour installer argparse utilisation de pip 1.5.4:
argparse
fichier différent de la norme (2.7+)?