J'ai un Macbook avec OS X El Captain. Je pense que Python 2.7
est préinstallé dessus. Cependant, j'ai installé Python 3.5
aussi. Quand j'ai commencé à utiliser Python 3
, j'ai lu que si je voulais installer un paquet, je devrais taper:
pip3 install some_package
Quoi qu'il en soit, maintenant, quand j'utilise
pip install some_package
Je reçois some_package
installé pour Python 3
. Je veux dire que je peux l'importer et l'utiliser sans problèmes. De plus, quand je tape juste pip3
dans Terminal
, j'ai reçu ce message concernant l'utilisation:
Usage:
pip <command> [options]
qui est le même message que je reçois quand je tape juste pip
.
Cela signifie-t-il que dans les versions précédentes, les choses étaient différentes et que maintenant pip
et pip3
peuvent être utilisés de manière interchangeable? Si tel est le cas, comment installer des packages pour Python 2
au lieu de Python 3
?
Votre pip
est un lien symbolique vers le même chemin de fichier exécutable avec pip3
. vous pouvez utiliser les commandes ci-dessous pour vérifier où se trouvent vos chemins pip
et pip3
:
$ ls -l `which pip`
$ ls -l `which pip3`
vous pouvez également utiliser les commandes ci-dessous pour en savoir plus:
$ pip show pip
$ pip3 show pip
Lorsque nous avons installé une version différente de python, nous pouvons créer de tels liens
c'est la même situation à propos de python
, python2
, python3
Ci-dessous, pour qui s'intéresse à la façon dont cela se passe dans différents cas:
Si vous avez python 2.x, puis installé python3, votre pip pointe sur pip3. vous pouvez le vérifier en tapant pip --version
qui serait identique à pip3 --version
.
Sur votre système, vous avez maintenant pip, pip2 et pip.
Si vous le souhaitez, vous pouvez modifier pip pour qu'il pointe vers pip2 au lieu de pip3.
Lorsque vous installez _python3
_, _pip3
_ est installé. Et si vous n'avez pas d'autre installation python (comme python2.7), un lien est créé, qui pointe pip
sur _pip3
_.
Donc pip
EST UN LIEN VERS _pip3
s'il n'y a pas d'autre version de python installée (autre que python3). pip
pointe généralement vers la première installation.
C'est un sujet délicat. En fin de compte, si vous appelez pip
, il invoquera soit pip2
ou pip3
, en fonction de la configuration de votre système.
Je pense que pip
, pip2
et pip3
ne sont pas des liens symboliques vers le même chemin de fichier exécutable. Notez ces commandes et résultats dans mon terminal linux:
mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10 2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10 2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10 2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)
Comme vous le voyez, ils existent dans des chemins différents.
pip3 ne fonctionne toujours que dans l'environnement Python3, comme pip2 avec Python2. pip fonctionne dans n'importe quel environnement adapté au contexte. Par exemple, si vous êtes dans un environnement Python3, pip fonctionnera dans l'environnement Python3.
Si vous avez installé Python 2.7, je pense que vous pouvez utiliser pip2
et pip2.7
pour installer des packages spécifiquement pour Python 2, comme
pip2 install some_pacakge
ou
pip2.7 install some_package
Et vous pouvez utiliser pip3
ou pip3.5
pour installer des packages spécifiquement pour Python 3.
À titre d'illustration:
pip --version
pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)
pip3 --version
pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)
python --version
Python 3.7.3
which python
/usr/bin/python
ls -l '/usr/bin/python'
lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3
which python3
/usr/bin/python3
ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7
ls -l /usr/bin/python3.7
-rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7
Ainsi, mon dans mon système par défaut python (Python 3.7.3), pip
estpip3
.
Étant donné que Python 3.6 virtualenv activé dans somepath/venv, les alias suivants ont résolu les divers problèmes sur un macOS Sierra où pip insistait pour pointer vers le 2.7 Python d'Apple.
alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'
Cela ne fonctionnait pas si bien quand je devais faire Sudo pip
, car l'utilisateur root ne connaissait rien de mon alias ni de virtualenv. J'ai donc dû ajouter un alias supplémentaire pour gérer cela. C'est un hack, mais ça marche, et je sais ce que ça fait:
alias sudopip='Sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'
pip3 n’existait pas pour démarrer ( commande introuvable ) avec et which pip
renverrait / opt/local/Library/Frameworks /Python.framework/Versions/2.7/bin/pip, le Apple Python.
Python 3.6 a été installé via macports.
Après l'activation de la virtualenv 3.6 avec laquelle je voulais travailler, which python
reviendrait chemin d'accès/venv/bin/python
D'une manière ou d'une autre, pip install
ferait le bon choix et toucherait mon virtualenv, mais pip list
ébranlerait les packages Python 2.7.
Pour Python, cela va bien au-delà de mes attentes en termes de convivialité pour les débutants.
Sur mon exemple Windows - et je ne comprends pas tout à fait mon environnement -, utiliser pip3 pour installer le paquet kaggle-cli a fonctionné - contrairement à pip. Je travaillais dans un environnement conda et les environnements semblent être différents.
(fastai) C:\Users\redact\Downloads\fast.ai\deeplearning1\nbs> pip --version
pip 9.0.1 à partir de C:\ProgramData\Anaconda3\envs\fastai\lib\site-packages (python 3.6)
(fastai) C:\Users\redact\Downloads\fast.ai\deeplearning1\nbs> pip3 --version
pip 9.0.1 à partir de c:\users\redact\appdata\local\programmes\python\python36\lib\site-packages (python 3.6)