Faire face à plusieurs versions de Python et PIP?
Question
Y at-il moyen de faire pip
bien jouer avec plusieurs versions de Python? Par exemple, je veux utiliser l'installation ou mon installation le site 2.6 pip
installer explicitement les choses soit mon site 2.5.
Par exemple, avec easy_install
, j'utilise easy_install-2.{5,6}
.
Et, oui - je sais virtualenv, et non -. Ce n'est pas une solution à ce problème particulier
La solution
Le recommandation actuelle est d'utiliser python -m pip
, où python
est la version de Python que vous souhaitez utiliser. Telle est la recommandation, car il 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, à gauche pour la postérité:
Depuis la version 0.8, prend en charge Pip pip-{version}
. Vous pouvez utiliser la même chose 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 à utiliser pipVERSION
au lieu de pip-VERSION
dans la version 1.5. Vous devez utiliser ce qui suit si vous avez pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
Vérifier https://github.com/pypa/pip/pull/1053 pour plus de détails
Références:
Autres conseils
Sous Windows, vous pouvez exécuter le module pip en utilisant une version Python donnée par la Vous pouvez être encore plus précis et demander une sous-version exacte de Python: Pour obtenir une liste de toutes les versions Python installées disponibles via le lanceur, exécutez: Vous pouvez lancer l'exécutable Python souhaité directement: py -3 -m pip install packagename
py -2 -m pip install packagename
py -3.6 -m pip install packagename
py --list
C:/path/to/specific/python.exe -m pip install packagename
/path/to/python2.{5,6} /path/to/pip install PackageName
ne fonctionne pas?
Pour que cela fonctionne sur une version python qui ne dispose pas de pépin 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)
J'avais python 2.6 installé par défaut (Amazon EC2 AMI), mais besoin python2.7 plus quelques paquets externes pour mon application. En supposant que vous python2.7 déjà installé aux côtés de python par défaut (2.6 dans mon cas). Voici comment installer pip et packages pour python2.7 non-default
Installer pip pour votre version python:
curl -O https://bootstrap.pypa.io/get-pip.py
python27 get-pip.py
Utiliser la version pip spécifique pour installer des paquets:
pip2.7 install mysql-connector-python --allow-external mysql-connector-python
Il a travaillé pour moi dans les fenêtres de cette façon:
-
J'ai changé le nom des fichiers python python.py et pythonw.exe à python3.py pythonw3.py
-
Alors j'ai couru cette commande dans l'invite:
python3 -m pip install package
D'autres réponses montrent comment utiliser pip à la fois 2.x et 3.x. Python, mais ne montre pas la façon de traiter le cas de plusieurs distributions Python (par exemple. Python et Python Anaconda d'origine) .
J'ai un total de 3 versions de Python: Python original 2.7 et Python 3.5 et Python 3.5 Anaconda
.Voici comment installer un paquet dans:
-
Original Python 3.5 :
/usr/bin/python3 -m pip install python-daemon
-
Original Python 2.7 :
/usr/bin/python -m pip install python-daemon
-
Anaconda Python 3.5 :
python3 -m pip install python-daemon
ou
pip3 install python-daemon
Plus simple, comme Anaconda remplace les binaires de python d'origine dans l'environnement de l'utilisateur.
Bien sûr, l'installation Anaconda doit être fait avec la commande
conda
, ceci est juste un exemple.
En outre, assurez-vous que pip est installé pour que python.You spécifique peut-être besoin d'installer manuellement pépin. Cela fonctionne dans Ubuntu 16.04:
sudo apt-get install python-pip
ou
sudo apt-get install python3-pip
Je suis tombé sur cette question moi-même récemment et constaté que je ne reçois pas le pépin droit pour Python 3, sur mon système Linux qui a également Python 2.
D'abord, vous devez 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, il suffit d'utiliser les éléments suivants pour Python 2:
pip install <package>
ou pour Python 3:
pip3 install <package>
pip est aussi un paquet python. Donc, la meilleure façon d'installer des modules à une version python spécifique serait inférieure
python2.7 /usr/bin/pip install foo
ou
python2.7 -m pip install foo
Donc, apparemment, il existe plusieurs versions de easy_install
et pip
. Il semble être un gros gâchis. Quoi qu'il en soit, ce que je l'ai fait 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
>>>
A partir de là: https://docs.python.org/3/installing/
Voici comment installer les paquets 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
de Windows , utilisez le lanceur Python py 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
Sous Linux, Mac OS X et d'autres systèmes POSIX, utilisez les commandes Python versionnés 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
(convenablement versionnées commandes pip peuvent également être disponibles)
Sur Windows, utilisez le lanceur Python py
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
puis essayez:
pip install SomePackage
La plupart des réponses traitent ici la question, mais je veux ajouter quelque chose ce qui me confond continuellement en ce qui concerne la création d'une installation alternative de python dans le /usr/local
sur CentOS 7. Quand je suis installé, il est apparu comme pip travaillait depuis Je pourrais utiliser pip2.7 install
et installerait modules. Cependant, ce que je ne pouvais pas comprendre pourquoi était ma nouvelle version installée de python ne voyait pas ce que j'installation.
Il se trouve dans CentOS 7 qu'il existe déjà un python2.7 et un pip2.7 dans le dossier /usr/bin
. Pour installer pip pour votre nouvelle distribution de python, vous devez dire précisément sudo aller à /usr/local/bin
sudo /usr/local/bin/python2.7 -m ensurepip
Cela devrait obtenir pip2.7 installé dans votre dossier /usr/local/bin
avec votre version de python. L'astuce est que lorsque vous voulez installer des modules, vous devez soit modifier la variable $PATH
sudo pour inclure /usr/local/bin
ou si vous devez exécuter
sudo /usr/local/bin/pip2.7 install <module>
si vous souhaitez installer un nouveau module. Il m'a fallu toujours de se rappeler que sudo
n'a pas été immédiatement voir /usr/local/bin
.
Installation de plusieurs versions de Python et packages respectifs.
version Python sur la même machine Windows: 2.7, 3.4 et 3.6
Installation des 3 versions de Python :
- installé Python 2.7, 3.4 et 3.6 ci-dessous avec les chemins
PATH pour les 3 versions de Python :
- Fait que la variable PATH (dans les variables système) ci-dessous a des chemins inclus - C: \ Python27 \; C: \ Python27 \ Scripts; C: \ Python34 \; C: \ Python34 \ Scripts, C: \ Python36 \; C: \ Python36 \ scripts \;
Modification du nom executables pour les versions :
- Changement du nom de l'exécutable python dans C: \ Python36 et C:. \ Python34 à python36 et python34 respectivement
Vérifié pour l'invite de commande avec toutes les versions:
Installation des packages séparément pour chaque version
Contexte: Archlinux
Action:
Installer python2-pip:
sudo pacman -S python2-pip
Vous avez maintenant pip2.7:
sudo pip2.7 install boto
Test (dans mon cas je avais besoin 'Boto'):
Exécutez les commandes suivantes:
python2
import boto
Le succès:. Pas d'erreur
Quitter: Ctrl + D
par exemple, si vous définissez d'autres versions (par exemple 3,5) par défaut et que vous voulez installer pip pour Python 2.7:
- pépin de téléchargement à l'adresse https://pypi.python.org/pypi/pip ( tar)
- fichier tar dézipper
- cd dans le répertoire du fichier
- sudo python2.7 setup.py install
Vous pouvez aller à, par exemple C: \ python2.7 \ Scripts et cde de ce chemin. Après cela, vous pouvez exécuter pip2.7 installer votrepaquetage ...
Cela package d'installation pour cette version de Python.
Voici mon avis sur le problème. Travaux pour python3. Les principales caractéristiques sont les suivantes:
- Chaque version Python est compilé à partir des sources
- Toutes les versions sont installées localement
- Ne pas mutiler l'installation de Python par défaut de votre système de quelque façon que
- Chaque version Python est isolé avec virtualenv
Les étapes sont les suivantes:
-
Si vous avez plusieurs versions de python supplémentaires installées dans une autre façon, se débarrasser d'eux, par exemple, retirer $ HOME / .local / lib / python3.x , etc. (également ceux installés dans le monde). Ne touchez pas la version par défaut de python3 de votre système bien.
-
Télécharger la source pour les différentes versions de python sous la structure de répertoire suivant:
$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/ ...
-
A chaque "Python-3.x.y /" répertoire, procédez comme suit (faire PAS : utilisez la commande "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
-
"python_versions /" créer des fichiers comme ceci:
env_python3x.bash: #!/bin/bash echo "type deactivate to exit" source $HOME/python_versions/Python-3.x.y/env/bin/activate
-
Maintenant, chaque fois que vous souhaitez opter pour python3.x, faire
source $HOME/python_versions/env_python3x.bash
pour entrer dans le virtualenv
-
Alors que dans le virtualenv, installez vos paquets python favoris avec
pip install --upgrade package_name
-
Pour quitter la virtualenv et la version python il suffit de taper "désactiver"
Ceci est probablement la chose tout à fait tort de le faire (je suis un noob python), mais je suis allé et modifié 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())
Pour les fenêtres en particulier: \ chemin \ \ python.exe -m pip install PackageName fonctionne.
Si vous avez plusieurs versions, ainsi que de multiples architectures (32 bits, 64 bits), vous aurez besoin d'ajouter un -32 ou -64 à la fin de votre version.
Pour les fenêtres, allez à cmd et --list type py et il produira les versions que vous avez installées. La liste ressemblera à ce qui suit:
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 souhaitez obtenir plus indepth, d'installer une version spécifique d'un paquet sur une version spécifique de python, utilisez == (version) après l'emballage. À titre d'exemple,
py -3.6-32 -m pip install opencv-python==4.1.0.25