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 это намного меньше моих ожиданий с точки зрения дружелюбия новичка.