pip або pip3 для встановлення пакетів для Python 3?


121

У мене 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.

Чи означає це , що в Previos версії, все було інакше, і тепер , pipі pip3можуть бути використані як взаємозамінні? Якщо так, і заради аргументу, як я можу встановлювати пакунки Python 2замість Python 3?

Відповіді:


74

Ви являєте pipсобою м'яке посилання на той самий шлях виконуваного файлу, з яким pip3. ви можете використовувати команди нижче, щоб перевірити, де перебувають ваш pipта pip3реальний шлях:

$ ls -l `which pip`
$ ls -l `which pip3`

Ви також можете використовувати команди нижче, щоб дізнатися більше деталей:

$ pip show pip
$ pip3 show pip

Коли ми встановлюємо різні версії python, ми можемо створювати такі м'які посилання на

  • встановити типовий піп на деяку версію.
  • робити різні посилання для різних версій.

Це та ж ситуація з python, python2,python3

Більше інформації нижче, якщо вас цікавить, як це відбувається в різних випадках:


1
Я думаю, що це неправильно. Мій pip3 також називає себе просто pip у своєму довідковому виході, все-таки звичайний pip встановлює пакети Python 2 у моїй системі. Я думаю, що stackoverflow.com/a/40832677/188108 є правильним, принаймні, він узгоджується з моїми спостереженнями.
Торстен Бронгер

це змінюється в тому, в якому середовищі та як ви встановлюєте python, ця відповідь полягає в тому, щоб дати зрозуміти, як знати, як працює pip, та відповісти на ситуацію, що задає питання. якщо це не однаково у вашій системі, ви все одно можете використовувати той самий спосіб, щоб з’ясувати, чому. не означає, що це неправильна відповідь.
CSJ

1
Сумніваюсь у цьому. У мене немає Mac, але на тестуванні ароматів Ubuntu, які випробовували, варіанти pip - це не посилання. Натомість це крихітні сценарії Python, які відрізняються лише рядком shebang.
Торстен Бронгер

Так, це те, що я маю на увазі, що це змінюється в оточенні та способі встановлення python (brew, apt, pyenv, компілювати вручну тощо), і до ситуації запитувача це відбувається тому, що вони є м'якими посиланнями, і ми використовуємо ls -lі pip showдля перевірки причини. і звичайно, ця відповідь - це відповісти на його запитання.
CSJ

Я не думаю, що на комп’ютері запитувача були посилання. Я не знаходжу жодної посилання на те, що Pip коли-небудь працював / працює таким чином.
Торстен Бронгер

26

Якщо у вас був python 2.x, а потім встановлено python3, ваш pip буде вказувати на pip3. Ви можете перевірити це, ввівши, pip --versionщо було б таким самим pip3 --version.

Зараз у вашій системі є pip, pip2 та pip3 .

Якщо ви хочете, ви можете змінити pip, щоб він вказав на pip2 замість pip3.


1
як ти це зміниш
ahnbizcad

3
@ahnbizcad Найпростіший спосіб визначити псевдонім на зразок цього: alias pip = "pip3"
apadana

2
Я зробив це, але мій pip3 був v9, коли pip був v10, тому я набрав, pip3 install --upgrade pipі це зробило обидва v10
Кевін Даніковський,

2
Ця відповідь неправильна. pip не вказуватиме на pip3. pip встановить пакети Python 2, а pip3 встановить пакети Python 3. Тестовано на Lubuntu 18.10.
Торстен Бронгер

@TorstenBronger, яким був порядок встановлення python у вашому оточенні?
apadana

14

Коли ви встановлюєте python3, pip3встановлюється. І якщо у вас немає іншого установки пітона (наприклад , python2.7) , то буде створене посилання , яка вказує pipна pip3.

Так pipє посилання на,pip3 якщо немає іншої версії python (крім python3). pipзагалом вказує на першу установку.


7

Це хитра тема. Врешті-решт, якщо ви посилаєтесь, pipвін посилатиметься або на, pip2або pip3залежно від налаштування системи.


6

За ілюстрацією:

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 .


5

Я думаю pip, pip2і pip3це не м'які посилання на той самий шлях до файлу. Зверніть увагу на ці команди та результати в моєму 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)

Як бачите, вони існують на різних шляхах.

pip3 завжди працює лише в середовищі Python3, як і pip2 з Python2. pip працює в будь-якому середовищі, яке відповідає контексту. Наприклад, якщо ви перебуваєте в середовищі Python3, pip буде працювати в середовищі Python3.


Я б сказав, що трохи оманливо сказати, що Pip пов'язаний із тим середовищем, яке є відповідним контексту. У випадку з venv виконуваний файл має специфічний для venv, а не для системи. Якщо ви не встановили кілька версій python в одному венвері, я не можу побачити, що ця проблема виникає там. Якщо не використовується venv, версія pip, що використовується, іноді неінтуїтивна і залежить від конфігурації вашої системи (часто визначається, яка версія python була встановлена ​​першою, як говорили інші). Але Піп не має інтелекту, який використовує для динамічного вибору версії
Люк Бауман

3

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

pip2 install some_pacakge

або

pip2.7 install some_package

І ви можете використовувати pip3або pip3.5встановлювати пакунки спеціально для Python 3.


1

У моєму екземплярі Windows - і я не повністю розумію своє оточення - використовуючи pip3 для встановлення пакету kaggle-cli, працював - тоді як pip цього не робив. Я працював у конденському середовищі, і зовнішні умови виглядають різними.

(fastai) C: \ Користувачі \ редакція \ Завантаження \ fast.ai \ deeplearning1 \ nbs> pip --версія

pip 9.0.1 від C: \ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-пакети (python 3.6)

(fastai) C: \ Користувачі \ редакт \ Завантаження \ fast.ai \ deeplearning1 \ nbs> pip3 --версія

pip 9.0.1 від c: \ users \ redact \ appdata \ local \ програми \ python \ python36 \ lib \ site-пакети (python 3.6)


0

З урахуванням активованого Python 3.6 virtualenv у somepath / venv , наступні псевдоніми вирішили різні проблеми на macOS Sierra, де Pip наполягав на вказівці на 2.7 Python від Apple.

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повернув деякий шлях / venv / bin / python

Якось pip installби зробив правильно, і вдарив би по моєму віртуаленву, але pip listвідірвався від пакетів Python 2.7.

Що стосується Python, це спосіб, що лежить під мої очікування щодо дружелюбності для початківців.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.