web-dev-qa-db-fra.com

pip: gérer plusieurs versions de Python?

Existe-t-il un moyen de rendre pip utilisable avec plusieurs versions de Python? Par exemple, je souhaite utiliser pip pour installer explicitement des éléments sur l’installation de mon site 2.5 ou de mon installation 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.

368
David Wolever

La recommandation current est d'utiliser python -m pip, où python est la version de Python que vous souhaitez utiliser. Ceci est la recommandation car cela fonctionne dans 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 supporte pip-{version}. Vous pouvez l'utiliser de la même façon 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 pipVERSION au lieu de pip-VERSION dans la version 1.5. Vous devriez 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:

435
Hugo Tavares

Sous Windows, vous pouvez exécuter le module pip en mentionnant la version de python (vous devez vous assurer que le programme de lancement est sur votre chemin).

py -3.4 -m pip install pyfora 

py -2.7 -m pip install pyfora

Alternativement, vous pouvez appeler le fichier exécutable python souhaité directement comme ceci:

/path/to/python.exe -m pip install pyfora

75
mon

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

Pour que cela fonctionne sur toutes les versions de python sur lesquelles 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)

75
bwinton

Python 2.6 était installé par défaut (Amazon EC2 AMI), mais j'avais besoin de python2.7 ainsi que de 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 les packages pour python2.7 autre que celui par défaut

Installez pip pour votre version de python:

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

Utilisez une version spécifique de pip pour installer des packages:

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

Cela a fonctionné pour moi dans Windows 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, j'ai juste lancé cette commande dans l'invite:

    python3 -m pip install package

27
Angie Alejo

D'autres réponses montrent comment utiliser pip avec Python 2.X et 3.X, mais ne montre 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 original 2.7 et Python 3.5 et Anaconda Python 3.5.

Voici comment j'installe un paquet dans:

  1. Original Python 3.5 :

    /usr/bin/python3 -m pip install python-daemon
    
  2. Original 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, Anaconda écrasant les binaires Python d'origine dans l'environnement utilisateur.

    Bien entendu, l’installation dans anaconda doit être effectuée avec la commande conda, ceci 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
22
quasoft

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

Tout d’abord, vous devez vous assurer que vous avez installé pip pour votre version de 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 une autre, utilisez simplement les éléments suivants pour Python 2:

pip install <package>

ou pour Python 3:

pip3 install <package>
14
clyde

pip est aussi un paquet python. Donc, le moyen le plus simple d'installer des modules sur une version spécifique de python serait le suivant

 python2.7 /usr/bin/pip install foo

ou 

python2.7 -m pip install foo
11
Prakash Palnati

Donc, apparemment, il existe plusieurs versions de easy_install et pip. Cela semble être un gros bazar. Quoi qu'il en soit, voici 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
>>> 
10
Timmmm

Sous Linux, Mac OS X et d'autres systèmes POSIX, utilisez les commandes Python versionnées en combinaison avec le commutateur -m 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 versionnées peuvent également être disponibles)

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

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.4, essayez:

pip install SomePackage
6
Saurabh Tripathi

De là: https://docs.python.org/3/installing/

Voici comment installer des packages pour différentes versions qui sont installées simultanément 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 programme de lancement 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
6
jmunsch

La plupart des réponses ici abordent le problème, mais je souhaite ajouter quelque chose qui me trouble continuellement en ce qui concerne la création d'une autre installation de python dans le /usr/local sur CentOS 7. Lorsque j'y ai installé, il semblait que pip fonctionnait depuis que je pouvais utiliser pip2.7 install et il installerait des modules. Cependant, je ne pouvais pas comprendre pourquoi ma version nouvellement installée de python ne voyait pas ce que j'installais.

Il s'avère que dans CentOS 7, il existe déjà un python2.7 et un pip2.7 dans le dossier /usr/bin. Pour installer pip pour votre nouvelle distribution Python, vous devez spécifiquement indiquer à Sudo d’aller à /usr/local/bin

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

Cela devrait installer pip2.7 dans votre dossier /usr/local/bin avec votre version de python. L'astuce est que lorsque vous souhaitez installer des modules, vous devez soit modifier la variable Sudo $PATH pour inclure /usr/local/bin, soit exécuter

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

si vous voulez installer un nouveau module. Il m'a fallu une éternité pour me souvenir que Sudo ne voyait pas immédiatement /usr/local/bin.

2
JeffP

Installation de plusieurs versions de Python et de leurs packages respectifs.

Version Python sur le même ordinateur Windows: 2.7, 3.4 et 3.6

Installation des 3 versions de Python :

  • Installé les Python 2.7, 3.4 et 3.6 avec les chemins ci-dessous

 enter image description here

PATH pour les 3 versions de Python :

  • Assurez-vous que la variable PATH (dans Variables système) contient les chemins suivants: C:\Python27 \; C:\Python27\Scripts; C:\Python34 \; C:\Python34\Scripts; C:\Python36 \; C:\Python36\Scripts \;

Renommer les exécutables pour les versions :

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

 enter image description here

Coche l'invite de commande avec toutes les versions:

 enter image description here

Installation des packages séparément pour chaque version

 enter image description here

0
Bahubali Patil

C’est probablement ce qui est complètement faux (je suis un noob en python), mais je viens d’entrer et de modifier le fichier pip.

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

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

from pip._internal import main

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

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

Cela installera le paquet pour cette version de Python.

0
thug_

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

  • Chaque version de 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 supplémentaires de Python installées d’une autre manière, supprimez-les, par exemple, supprimez $ HOME/.local/lib/python3.x, etc. (ainsi que celles installées globalement). Ne touchez pas la version python3 par défaut de votre système.

  2. Téléchargez le 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. À chaque répertoire "Python-3.x.y /", procédez comme suit (faitesPASutilisez "Sudo" dans l'une 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 paquets python préférés avec

    pip install --upgrade package_name
    
  7. Pour quitter les versions virtualenv et python, tapez simplement "deactivate"

0
El Sampsa

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

0
Aaquila

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

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

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: pas d'erreur.

Sortie: Ctrl+D

0
Paul Parker