Pip или pip3 для установки пакетов для Python 3?

У меня есть Macbook с OS X El Captain. Я думаю, что Python 2.7 поставляется с предустановленной на нем. Однако я также установил Python 3.5. Когда я начал использовать Python 3, я прочитал, что если я хочу установить пакет, я должен ввести:

pip3 install some_package

В любом случае, теперь, когда я использую

pip install some_package

Я установил some_package для Python 3. Я имею в виду, что я могу импортировать его и использовать без проблем. Более того, когда я набираю только pip3 в Terminal, я получил это сообщение об использовании:

Usage:   
  pip <command> [options]

которое является тем же сообщением, которое я получаю, когда я печатаю только pip.

Означает ли это, что в предыдущих версиях все было по-другому, и теперь pip и pip3 можно использовать взаимозаменяемо? Если да, и для аргументации, как я могу установить пакеты для Python 2 вместо Python 3?

Ответы

Ответ 1

Ваш pip - это мягкая ссылка на тот же путь к исполняемому файлу, что и у pip3. Вы можете использовать команды ниже, чтобы проверить, где ваши реальные пути pip и pip3:

$ ls -l 'which pip'
$ ls -l 'which pip3'

Вы также можете использовать приведенные ниже команды для получения более подробной информации:

$ pip show pip
$ pip3 show pip

Когда мы устанавливаем разные версии python, мы можем создавать такие программные ссылки на

  • установить pip по умолчанию для какой-либо версии.
  • создавать разные ссылки для разных версий.

Та же ситуация с python, python2, python3

Ниже приведена дополнительная информация, если вам интересно, как это происходит в разных случаях:

Ответ 2

Если у вас есть python 2.x, а затем установлен python3, ваш пип будет указывать на pip3. вы можете проверить это, набрав pip --version, который будет таким же, как pip3 --version.

В вашей системе теперь есть pip, pip2 и pip3.

Если вы хотите, вы можете сменить pip, чтобы указать на pip2 вместо pip3.

Ответ 3

При установке python3 устанавливается pip3. И если у вас нет другой установки python (например, python2.7), тогда создается ссылка, которая указывает pip на pip3.

So pip является ссылкой на pip3, если нет другой версии установленного python (кроме python3). pip обычно указывает на первую установку.

Ответ 4

Это сложный вопрос. В конце, если вы вызываете pip, он будет вызывать либо pip2, либо pip3, в зависимости от того, как вы настроили свою систему.

Ответ 5

Я думаю, что pip, pip2 и pip3 не являются мягкими ссылками на один и тот же путь исполняемого файла. Обратите внимание на эти команды и результаты в моем терминале linux:

[email protected] ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
[email protected] ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
[email protected] ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
[email protected] ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
[email protected] ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
[email protected] ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

Как вы видите, они существуют в разных путях.

pip3 всегда работает только в среде Python3, так как pip2 работает с Python2. pip работает в зависимости от того, какая среда подходит для контекста. Например, если вы находитесь в Python3 venv, pip будет работать в среде Python3.

Ответ 6

Если вы установили Python 2.7, я думаю, вы могли бы использовать pip2 и pip2.7 для установки пакетов специально для Python 2, например

pip2 install some_pacakge

или

pip2.7 install some_package

И вы можете использовать pip3 или pip3.5 для установки pacakges специально для Python 3.

Ответ 7

К иллюстрации:

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

Таким образом, мой системный python по умолчанию (Python 3.7.3), pip - это pip3.

Ответ 8

В моем экземпляре Windows - и я не полностью понимаю мою среду - с помощью pip3 для установки пакета kaggle-cli работал, а pip - нет. Я работал в среде conda, и среда выглядела иначе.

(fastai) C:\Users\redact\Downloads\fast.ai\deeplearning1\nbs > pip --version

pip 9.0.1 из 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 из c:\users\redact\appdata\local\programs\python\python36\lib\site-packages (python 3.6)

Ответ 9

Учитывая активацию Python 3.6 virtualenv в somepath/venv, следующие псевдонимы решили различные проблемы в macOS Sierra, где pip настоял на указании на Apple 2.7 Python.

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

Это не сработало так хорошо, когда мне пришлось делать sudo pip как пользователь root ничего не знает о моем псевдониме или virtualenv, поэтому мне пришлось добавить дополнительный псевдоним, чтобы справиться с этим. Это взлом, но он работает, и я знаю, что он делает:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

фон:

pip3 не существует для запуска (команда не найдена) и с which pip будет возвращаться /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip Apple Python.

Python 3.6 был установлен через macports.

После активации 3.6 virtualenv, с которой я хотел работать, which python вернет somepath/venv/bin/python

Каким-то образом pip install сделает правильную вещь и поразит мой virtualenv, но pip list свалится с пакетами Python 2.7.

Для Python это намного меньше моих ожиданий с точки зрения дружелюбия новичка.