web-dev-qa-db-fra.com

Impossible de mettre à niveau python six sous mac osx 10.10.2

J'essaie d'installer la dernière version de six python mais j'ai les problèmes suivants. Je ne peux pas me débarrasser de six 1.4.1 sous mac OSX 10.10.2

Sudo pip install six --upgrade
Requirement already up-to-date: six in /Library/Python/2.7/site-packages
Cleaning up...

pip search six
six - Python 2 and 3 compatibility utilities
INSTALLED: 1.9.0 (latest)

python -c "import six; print six.version"
1.4.1

which -a python
/usr/bin/python
which -a pip
/usr/local/bin/pip

Qu'est-ce qui ne va pas ici? Impossible de mettre à niveau six!

21
Anish

Par défaut, Mac OS X python est installé comme framework. Sous le répertoire framework, il y a un répertoire 'Extras' et le package six y est déjà placé.

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six.py

Selon la description ( https://github.com/MacPython/wiki/wiki/Which-Python ), /System/Library/Frameworks/Python.framework/Versions/2.7/Extras est répertorié avant /Library/Python/2.7/site-packages dans le chemin de recherche du module. Cela signifie que tous les packages existent déjà dans /System/Library/Frameworks/Python.framework/Versions/2.7/Extras impossible de mise à niveau.

Vous devriez peut-être installer python manuellement et ne pas utiliser python par défaut.

11

J'ai résolu le problème par la méthode suivante.

  1. Téléchargez le package six-1.10.0.tar.gz
  2. Utilisez cette commande pour l'installer.

python setup.py install

Cela fonctionne car il installe la nouvelle version de six à / Library/Python/2.7/site-packages / qui est recherché avant / System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python /

24
kellyxiepei

Pour moi, utiliser simplement homebrew a tout corrigé.

brew install python
16
matt burns

Votre binaire pip appartient à /usr/local/bin/python, tandis que python pointe vers /usr/bin/python. En conséquence

pip install --upgrade six

va installer sur /usr/local/bin/python.

La commande ci-dessous s'assurera que la bonne version de pip est utilisée:

python -m pip install --upgrade six
16
cel

Ce qui a fonctionné pour moi, c'était d'utiliser easy_install au lieu de pip.

easy_install -U six

Easy_install a réussi à mettre à niveau le package même en cas d'échec de pip.

15

Je suis tombé sur ce problème exact lors de l'utilisation de pip pour installer le client openstack. Mon correctif consistait à utiliser easy_install au lieu de pip, car il utilise /Library/Python/2.7/site-packages/ pour l'installation du module au lieu de /System/Library/Frameworks/Python.framework/Versions/2.7/Extras. Si cette solution de contournement n'est pas une option pour vous, je peux confirmer que @Masakazu Matsushita a la solution de contournement correcte en définissant PYTHONPATH sur /Library/Python/2.7/site-packages. Pour implémenter cette solution de contournement, ajoutez cette ligne:

export PYTHON_PATH=/Library/Python/2.7/site-packages

à ton ~/.bashrc et ~/.profile (s'il s'agit d'une interface graphique Python que vous essayez d'installer).

4
user1833042

Essayez avec pip2 son travail pour moi pip2 install -U six

3
Harry1992

Essayez ces étapes

  1. Réinstaller python en utilisant brew

    $ brew install python

  2. Résoudre le problème de lien symbolique manquant

    $ brew link --overwrite python

  3. Redémarrez le système ou exécutez

    $ hash -r python

3
Shamshad Alam

Bien que l'une ou l'autre des solutions ci-dessus puisse fonctionner pour vous, je pense qu'il est important de comprendre ce qui se passe et quelles sont les options que vous avez. J'ai trouvé cette (assez longue) description très utile: elle commence par décrire les options et suggère ensuite des solutions.

1
varepsilon

Au final, le problème pour moi était que j'utilisais IPython Shell.

which ipython revenu /usr/local/bin/ipython et lors de l'inspection ce fichier a déclaré en haut #!/usr/bin/python, qui semblait contourner tous mes efforts pour utiliser le bon emplacement python.

Changer simplement cette ligne #!/usr/local/bin/python pour pointer vers la bonne version python signifiait alors qu'IPython utilisait le bon module six.

1
trim