Gérer plusieurs versions de Python et PIP?


501

Existe-t-il un moyen de bien pipjouer avec plusieurs versions de Python? Par exemple, je souhaite utiliser pippour installer explicitement des éléments sur mon installation de site 2.5 ou sur mon site 2.6.

Par exemple, avec easy_install, j'utilise easy_install-2.{5,6}.

Et, oui - je connais virtualenv, et non - ce n'est pas une solution à ce problème particulier.


1
@YiboYang ça marche avec des choses comme pip34et pip35?
JinSnow

2
@JinSnow Cela devrait, à condition de pip3.xgérer réellement la version python sur laquelle vous souhaitez installer les packages (peut-être exécuter pip3.x -Vpour voir). Ou utilisez la solution de @ Hugo pour avoir un meilleur contrôle sur de nombreuses versions de python.
Yibo Yang

Réponses:


627

La recommandation actuelle est d'utiliser python -m pip, où pythonest la version de Python que vous souhaitez utiliser. C'est la recommandation car elle fonctionne sur toutes les versions de Python et dans toutes les formes de virtualenv. Par exemple:

# The system default python:
$ python -m pip install fish

# A virtualenv's python:
$ .env/bin/python -m pip install fish

# A specific version of python:
$ python-3.6 -m pip install fish

Réponse précédente, laissée à la postérité:

Depuis la version 0.8, Pip prend en charge pip-{version}. Vous pouvez l'utiliser de la même manière que easy_install-{version}:

$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage

EDIT : pip a changé son schéma pour utiliser pipVERSIONau lieu de pip-VERSIONdans la version 1.5. Vous devez utiliser ce qui suit si vous avez pip >= 1.5:

$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage

Consultez https://github.com/pypa/pip/pull/1053 pour plus de détails


Références:


12
Ça ne marche pas. Bien que la dernière version de pip ait installé un script pip-2.6, elle n'a pas pris la peine d'installer un script pip-2.5.
Chris B.

2
Vous devez mettre à jour votre version de python2.5 pip ... Il crée seulement pip- {PYVERSION} sous le python que vous utilisez pip.
Hugo Tavares

4
Ceci est une erreur. J'utilise pip 1.2.1 avec Python2.7 sur Ubuntu, et il n'y a pas de versions alternatives de pip.
Cerin

2
@rodling: vous n'avez probablement pas installé pipvia pip/ easy_installou get-pip.pyou vous n'avez pas python2.7. si vous avez python2.7, essayez:pip install --upgrade pip et vous devriez avoir pipetpip-2.7
Hugo Tavares

2
@JCRocamonde: le programme pipest choisi en fonction de la variable d'environnement $ PATH. Si vous souhaitez modifier le programme pip "par défaut", réorganisez la variable d'environnement $ PATH. Recherchez quelque chose comme "path environment variable linux" pour plus de détails sur $ PATH.
Hugo Tavares

117

Sous Windows, vous pouvez exécuter le module pip en utilisant une version Python donnée par le lanceur Python , py.exesi vous avez choisi d'installer lors de l' installation Python 3.

py -3 -m pip install packagename
py -2 -m pip install packagename

Vous pouvez être encore plus précis et demander une sous-version exacte de Python:

py -3.6 -m pip install packagename

Pour obtenir une liste de toutes les versions de Python installées disponibles via le lanceur, exécutez:

py --list

Alternativement, vous pouvez lancer directement l'exécutable Python souhaité:

C:/path/to/specific/python.exe -m pip install packagename

11
ayant à la fois 2.7 et 3.5 installés sur les fenêtres, cela a fonctionné immédiatement
phil_lgr

1
Yat - il pas moyen d'avoir python2, python3, pip2et pip3sous Windows?
thomthom

1
cela a fonctionné pour moi sur les fenêtres. avait 3 installés et ensuite installé 2
daneshjai

1
Merci, cela a fonctionné pour moi! Je ne peux pas croire à quel point c'était difficile. (Aucune de celles-ci ou des variantes d' installation de pip python-3.7 -m ou d' installation de pip python-3.7 -m ou d' installation de pip python3.7 -m n'a fonctionné pour moi ...)
jeppoo1

75

/path/to/python2.{5,6} /path/to/pip install PackageName ne fonctionne pas?

Pour que cela fonctionne sur n'importe quelle version de python sur laquelle pip n'est pas déjà installé, vous devez télécharger pip et faire python*version* setup.py install. Par exemple python3.3 setup.py install. Cela résout l'erreur d'importation dans les commentaires. (Comme suggéré par @hbdgaf)


4
Pour que cela fonctionne sur python 3 par exemple, vous devez télécharger pip et faire "l'installation de python3 setup.py". Personnellement, je trouve que cette solution n'est pas très agréable. Pour commencer, je ne savais même pas que la commande pip n'était pas un binaire. Ce n'est pas une critique de @bwinton, je suis juste surpris qu'il n'y ait pas de meilleure façon de le faire.
Mike Vella

28
"ImportError: Aucun module nommé pkg_resources"
Cerin

3
Je suis déconcerté par le fait que le problème avec l'importerror ait eu plus de reprises que la solution au même commentaire au-dessus.
RobotHumans

1
De plus, / path / to / pip est le suivant: python2. {5,6} / Scripts / pip2. {5,6}
raul

2
Pour appeler un module de python, vous devez utiliserpython2.7 -m pip install PackageName
llrs

52

J'avais python 2.6 installé par défaut (Amazon EC2 AMI), mais j'avais besoin de python2.7 plus quelques packages externes pour mon application. En supposant que vous avez déjà installé python2.7 avec python par défaut (2.6 dans mon cas). Voici comment installer pip et packages pour python2.7 non par défaut

Installez pip pour votre version python:

curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py

Utilisez une version pip spécifique pour installer les packages:

pip2.7 install mysql-connector-python --allow-external mysql-connector-python

2
super a fonctionné pour moi pour python 3.4 avec ce qui suit: python3 get-pip.pyet plus tard en utilisant la commande pip avecpip34 install example
Karl Adler

Merci. Très utile. Testé sur deux serveurs différents.
user2099484

3
Cela a fonctionné lorsque j'ai utilisé «python2.7 get-pip.py» au lieu de «python27 get-pip.py»
SummerEla

Homme qui semblait sommaire mais cela a fonctionné pour moi en installant pip2.6 sur Centos 5.
Aaron R.

Got Could not find a version that satisfies the requirement pip (from versions: ) No matching distribution found for pipquand j'ai essayépython2.6 get-pip.py
Pyderman

29

Cela a fonctionné pour moi dans les fenêtres de cette façon:

  1. J'ai changé le nom des fichiers python python.py et pythonw.exe en python3.py pythonw3.py

  2. Ensuite, je viens d'exécuter cette commande à l'invite:

    python3 -m pip install package


4
Juste pour quiconque découvre comment installer des packages en python3 en utilisant pip sur mac, cette commande est la façon dont vous installez des packages. J'ai passé des heures à chercher et je l'ai enfin trouvé!
sidney

25

D'autres réponses montrent comment utiliser pip avec Python 2.X et 3.X, mais ne montrent pas comment gérer le cas de plusieurs distributions Python (par exemple, Python original et Anaconda Python) .

J'ai un total de 3 versions de Python: Python 2.7 et Python 3.5 et Anaconda Python 3.5 originaux.

Voici comment j'installe un package dans:

  1. Origine Python 3.5 :

    /usr/bin/python3 -m pip install python-daemon
  2. Origine Python 2.7 :

    /usr/bin/python -m pip install python-daemon
  3. Anaconda Python 3.5 :

    python3 -m pip install python-daemon

    ou

    pip3 install python-daemon

    Plus simple, car Anaconda remplace les binaires Python d'origine dans l'environnement utilisateur.

    Bien sûr, l'installation dans anaconda doit se faire avec la condacommande, ce n'est qu'un exemple.


Assurez-vous également que pip est installé pour ce python spécifique. Vous devrez peut-être installer manuellement pip. Cela fonctionne dans Ubuntu 16.04:

sudo apt-get install python-pip 

ou

sudo apt-get install python3-pip

Les conseils concernant Anaconda ici ne sont pas exacts ... ils ne "remplacent" rien. Le fait qu'il récupère la version Anaconda par défaut sur votre système est simplement un effet secondaire de votre configuration spécifique, de la façon dont vous avez installé chaque interpréteur et de l'ordre des chemins de votre environnement .... ceux-ci varieront pour les autres.
Corey Goldberg

@CoreyGoldberg Je suis d'accord, c'était la valeur par défaut sur mon installation d'Ubuntu 16.04
quasoft

1
Vous monsieur, êtes l'homme. De toutes les explications totalement inutiles entourant cette question, c'est la seule qui ait du sens pour moi. Il est temps d'alias ces commandes et de continuer ma vie! MERCI.
Iofacture

14

J'ai moi-même rencontré ce problème récemment et j'ai constaté que je n'obtenais pas le bon pip pour Python 3, sur mon système Linux qui a également Python 2.

Vous devez d'abord vous assurer que vous avez installé pip pour votre version python:

Pour Python 2:

sudo apt-get install python-pip

Pour Python 3:

sudo apt-get install python3-pip

Ensuite, pour installer des packages pour une version de Python ou l'autre, utilisez simplement ce qui suit pour Python 2:

pip install <package>

ou pour Python 3:

pip3 install <package>

11

pip est également un package python. Donc, la façon la plus simple d'installer des modules dans une version spécifique de python serait ci-dessous

 python2.7 /usr/bin/pip install foo

ou

python2.7 -m pip install foo

10

Donc, apparemment, il existe plusieurs versions de easy_install et pip . Cela semble être un gros gâchis. Quoi qu'il en soit, c'est ce que j'ai fait pour installer Django pour Python 2.7 sur Ubuntu 12.10:

$ sudo easy_install-2.7 pip
Searching for pip
Best match: pip 1.1
Adding pip 1.1 to easy-install.pth file
Installing pip-2.7 script to /usr/local/bin

Using /usr/lib/python2.7/dist-packages
Processing dependencies for pip
Finished processing dependencies for pip

$ sudo pip-2.7 install django
Downloading/unpacking django
  Downloading Django-1.5.1.tar.gz (8.0Mb): 8.0Mb downloaded
  Running setup.py egg_info for package django

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
Installing collected packages: django
  Running setup.py install for django
    changing mode of build/scripts-2.7/django-admin.py from 644 to 755

    warning: no previously-included files matching '__pycache__' found under directory '*'
    warning: no previously-included files matching '*.py[co]' found under directory '*'
    changing mode of /usr/local/bin/django-admin.py to 755
Successfully installed django
Cleaning up...

$ python
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 

8

D'ici: https://docs.python.org/3/installing/

Voici comment installer des packages pour différentes versions installées en même temps linux, mac, posix :

python2   -m pip install SomePackage  # default Python 2
python2.7 -m pip install SomePackage  # specifically Python 2.7
python3   -m pip install SomePackage  # default Python 3
python3.4 -m pip install SomePackage  # specifically Python 3.4
python3.5 -m pip install SomePackage  # specifically Python 3.5
python3.6 -m pip install SomePackage  # specifically Python 3.6

Sous Windows , utilisez le lanceur py Python en combinaison avec le commutateur -m:

py -2   -m pip install SomePackage  # default Python 2
py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3   -m pip install SomePackage  # default Python 3
py -3.4 -m pip install SomePackage  # specifically Python 3.4

pipenv
Pensez

7

Sous Linux, Mac OS X et autres systèmes POSIX, utilisez les commandes Python versionnées en combinaison avec le -mcommutateur pour exécuter la copie appropriée de pip:

python2.7 -m pip install SomePackage
python3.4 -m pip install SomePackage

(des commandes pip correctement adaptées peuvent également être disponibles)

Sous Windows, utilisez le pylanceur Python en combinaison avec le -mcommutateur:

py -2.7 -m pip install SomePackage  # specifically Python 2.7
py -3.4 -m pip install SomePackage  # specifically Python 3.4

si vous obtenez une erreur pour py -3.4alors essayez:

pip install SomePackage

5

Installation de plusieurs versions de Python et des packages respectifs.

Version Python sur la même machine Windows: 2.7, 3.4 et 3.6

Installation des 3 versions de Python :

  • Installation de Python 2.7, 3.4 et 3.6 avec les chemins ci-dessous

entrez la description de l'image ici

CHEMIN pour les 3 versions de Python :

  • Assurez-vous que la variable PATH (dans Variables système) comporte des chemins ci-dessous inclus - C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts; C: \ Python36 \; C: \ Python36 \ Scripts \;

Renommer les exécutables pour les versions :

  • Modification du nom de l'exécutable python dans C: \ Python36 et C: \ Python34 en python36 et python34 respectivement.

entrez la description de l'image ici

Vérifié pour l'invite de commande avec toutes les versions:

entrez la description de l'image ici

Installation des packages séparément pour chaque version

entrez la description de l'image ici


Merci !!! C'est le meilleur moyen
rakshit ks

4

Si vous avez plusieurs versions ainsi que plusieurs architectures (32 bits, 64 bits), vous devrez ajouter un -32 ou -64 à la fin de votre version.

Pour Windows, allez dans cmd et tapez py --list et il produira les versions que vous avez installées. La liste ressemblera à ceci:

Installed Pythons found by py Launcher for Windows
 -3.7-64 *
 -3.7-32
 -3.6-32

La commande complète à titre d'exemple sera:

py -3.6-32 -m pip install (package)

Si vous voulez obtenir plus de détails, pour installer une version spécifique d'un package sur une version spécifique de python, utilisez == (version) après le package. Par exemple,

py -3.6-32 -m pip install opencv-python==4.1.0.25

2

La plupart des réponses ici abordent le problème, mais je veux ajouter quelque chose qui m'a toujours dérouté en ce qui concerne la création d'une installation alternative de python dans /usr/localCentOS 7. Lorsque je l'ai installé, il semblait que pip fonctionnait car je pouvais utiliser pip2.7 installet il installerait des modules. Cependant, ce que je ne pouvais pas comprendre, c'est pourquoi ma version de python nouvellement installée ne voyait pas ce que j'installais.

Il s'avère dans CentOS 7 qu'il y a déjà un python2.7 et un pip2.7 dans le /usr/bindossier. Pour installer pip pour votre nouvelle distribution python, vous devez spécifiquement dire à sudo d'aller à/usr/local/bin

sudo /usr/local/bin/python2.7 -m ensurepip

Cela devrait installer pip2.7 dans votre /usr/local/bindossier avec votre version de python. L'astuce est que lorsque vous souhaitez installer des modules, vous devez soit modifier la $PATHvariable sudo à inclure, /usr/local/binsoit exécuter

sudo /usr/local/bin/pip2.7 install <module>

si vous souhaitez installer un nouveau module. Il m'a fallu une éternité pour me souvenir que je sudone voyais pas immédiatement /usr/local/bin.


2

Voici mon point de vue sur le problème. Fonctionne pour Python3. Les principales caractéristiques sont:

  • Chaque version Python est compilée à partir des sources
  • Toutes les versions sont installées localement
  • Ne modifie en aucune façon l'installation Python par défaut de votre système
  • Chaque version de Python est isolée avec virtualenv

Les étapes sont les suivantes:

  1. Si vous avez plusieurs versions de python supplémentaires installées d'une autre manière, supprimez-les, par exemple, supprimez $ HOME / .local / lib / python3.x , etc. (également celles installées globalement). Ne touchez pas cependant à la version par défaut de votre système python3.

  2. Téléchargez la source pour différentes versions de python sous la structure de répertoires suivante:

    $HOME/
        python_versions/ : download Python-*.tgz packages here and "tar xvf" them.  You'll get directories like this:
          Python-3.4.8/
          Python-3.6.5/
          Python-3.x.y/
          ...
  3. Dans chaque répertoire "Python-3.xy /", procédez comme suit (n'utilisez PAS "sudo" dans aucune des étapes!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
  4. Dans "python_versions /", créez des fichiers comme celui-ci:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
  5. Maintenant, chaque fois que vous souhaitez opter pour python3.x, faites

    source $HOME/python_versions/env_python3x.bash

    entrer dans le virtualenv

  6. Dans virtualenv, installez vos packages python préférés avec

    pip install --upgrade package_name
  7. Pour quitter la version virtualenv et python, tapez simplement "désactiver"

MISE À JOUR

Il semble que ce --no-site-packagessoit obsolète. Il existe une solution simple à ce problème: une fois que vous avez activé virtualenv, il suffit de pointer la variable HOME env vers un autre emplacement que votre répertoire personnel, c'est-à-dire:

export HOME=some/where/else

Une bonne façon de le faire en général est:

  • Créer virtualenv
  • Activer virtualenv
  • Si vous souhaitez "recycler" les bibliothèques existantes vers votre virtualenv, créez un lien logiciel à partir de votre installation existante, c'est-à-dire ln -s $HOME/.local/lib/python3.6/site-packages/numpy $PWD/venv/lib/python3.6/site-packages/
  • Faites export PYTHONPATH=,export HOME=/some/other/dir

Vous devriez maintenant avoir virtualenv personnalisé.


0

Contexte: Archlinux

Action:
installez python2-pip:
sudo pacman -S python2-pip

Vous avez maintenant pip2.7:
sudo pip2.7 install boto

Test (dans mon cas, j'avais besoin de 'boto'):
Exécutez les commandes suivantes:

python2
import boto

Succès: aucune erreur.

Sortie: Ctrl+D


0

par exemple, si vous définissez d'autres versions (par exemple 3.5) par défaut et que vous souhaitez installer pip pour python 2.7:

  1. téléchargez pip sur https://pypi.python.org/pypi/pip (tar)
  2. décompressez le fichier tar
  3. cd dans le répertoire du fichier
  4. sudo python2.7 setup.py install

0

Vous pouvez aller par exemple à C: \ Python2.7 \ Scripts puis exécuter cmd à partir de ce chemin. Après cela, vous pouvez exécuter pip2.7 installer votre package ...

Cela installera le package pour cette version de Python.


0

C'est probablement la mauvaise chose à faire (je suis un noob en python), mais je suis juste entré et édité le fichier pip

#!/usr/bin/env python3 <-- I changed this line.

# -*- coding: utf-8 -*-
import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

0

Pour Windows en particulier: \ path \ to \ python.exe -m pip install PackageName fonctionne.


0

pour Blender:

/usr/bin $ python3.7 -m pip install irc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.