web-dev-qa-db-fra.com

Comment substituer la commande pip à Python3.x au lieu de Python2.7?

J'utilise OSX et j'ai installé pip pour Python3.5 et Python2.7. Je sais que je peux exécuter la commande pip2 pour utiliser Python2 et lorsque j'utilise la commande pip3, Python3.x sera utilisé. Le problème est que la valeur par défaut de pip est définie sur Python2.7 et je veux que ce soit Python3.x.

Comment puis-je changer ça?

edit: Non, je n’exécute pas encore d’environnement virtuel. S'il s'agissait d'un environnement virtuel, je pourrais simplement exécuter Python3.x et oublier Python2.7. Malheureusement, OSX ayant besoin de Python2.7, je ne peux pas le faire. D'où pourquoi je demande ceci.

Merci d'avoir répondu. Cependant, je ne veux pas changer le fonctionnement de python. Au lieu de cela, je voudrais changer le chemin que prend pip. Pour le moment, pip -V me montre pip 8.1.2 from /Library/Python/2.7/site-packages (python 2.7), mais je cherche pip 8.1.2 from /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5). Je suis sûr qu'il doit y avoir un moyen de le faire. Des idées?

6
loki l

Je viens toujours de l'exécuter via Python lui-même, de cette façon:

python3 -m pip install some_module

ou

python2 -m pip install some_module

Le -m appelle le module __main__.py d'un paquet spécifié. Pip supporte cela.

8
Ghostkeeper

Ne pouvez-vous pas alias pip='pip3' dans votre ~/.bash_profile?

Dans Terminal, exécutez nano ~/.bash_profile, puis ajoutez à la fin une ligne qui lit alias pip='pip3'. C'est sans danger. cela n'affectera pas les processus du système, seulement votre terminal.

6
Luke Taylor

Pour vos projets, vous devriez utiliser un virtualenv .

Vous pouvez choisir quel python sera celui de virtualenv lors de la création, en le spécifiant sur la ligne de commande:

virtualenv -p python3 env
# then
. env/bin/activate
python              # ← will run python3

Cet interpréteur python sera celui utilisé lorsque vous exécuterez python ou pip pendant que virtualenv est actif.

Sous le capot, l'activation de virtualenv va:

  • modifiez les paramètres de votre environnement PATH pour que les fichiers binaires de env/bin remplacent ceux de votre système.
  • modifiez les paramètres de votre environnement PYTHONHOME pour que les modules python soient chargés à partir de env/lib.

Donc, python, pip et tout autre paquet que vous installez avec pip seront exécutés à partir de virtualenv, avec la version de python que vous avez choisie et les versions de paquet que vous avez installées dans virtualenv.

En dehors de cela, exécuter python sans utiliser virtualenv exécutera simplement le python par défaut du système, que vous ne pouvez généralement pas modifier car cela endommagerait de nombreux scripts système.

3
spectras

Puisque vous avez spécifié dans les commentaires que vous voulez que la syntaxe telle que pip install [package] fonctionne, voici une solution:

  1. Installez setuptools pour Python3: apt-get install python3-setuptools

  2. pip pour Python3 peut maintenant être installé par: python3 -m easy_install pip

  3. Maintenant, vous pouvez utiliser pip avec la version spécifique de Python pour installer le package pour Python 3 avec: pip-3.2 install [package]

1
EzioAuditore

Bien que PEP 394 ne mentionne pas spécifiquement pip, il aborde un certain nombre d’autres commandes liées à Python (y compris python lui-même). La version courte est que, pour des raisons de compatibilité ascendante, les commandes non versionnées doivent faire référence à Python 2.x pour le futur immédiat sur la plupart des systèmes raisonnables.

En général, ces alias sont implémentés sous forme de liens symboliques et vous pouvez simplement retourner le lien symbolique pour pointer vers la version de votre choix (par exemple, avec ln -f -s $(which pip3) $(which pip) en tant que racine). Mais ce n'est peut-être pas une bonne idée si vous avez un logiciel qui s'attend à interagir avec Python 2 (ce qui peut être plus que vous ne le pensez puisque beaucoup de logiciels interagissent avec Python).

L'option saner consiste à configurer un Virtualenv avec Python 3. Ensuite, dans Virtualenv , toutes les commandes liées à Python feront référence à 3.x au lieu de 2.x. Cela ne cassera pas le système, contrairement au paragraphe précédent qui pourrait bien casser des choses.

0
Kevin