Як я можу використовувати Homebrew для встановлення Python 2 і 3 на Mac?


146

Мені потрібно мати можливість перемикатися вперед і назад між Python 2 і 3. Як це зробити, використовуючи Homebrew, оскільки я не хочу возитися з доріжкою і потрапляти в проблеми. Зараз у мене встановлено 2.7 через Homebrew.


Ви можете змінити питання , щоб видалити доморослу посилання , так як це не обов'язково є обов'язковим вимога для досягнення своєї мети (див моєї відповіді нижче, наприклад , stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Відповіді:


288

Я б використовував pyenv Ви можете встановити його:

$ brew install pyenv

Щоб увімкнути pyenv в оболонці Bash, потрібно запустити:

$ eval "$(pyenv init -)"

Щоб зробити це автоматично для Bash при запуску, додайте цей рядок до свого ~/.bash_profile. 1

Використання:

Після того, як ви встановили pyenv та активували його, ви можете встановити різні версії python та вибрати, яку саме ви можете використовувати. Приклад:

$ pyenv install 2.7.5

Ви можете перевірити встановлені версії:

$ pyenv versions

І ви можете перемикатися між версіями python за допомогою команди:

$ pyenv global 3.3.1

Також ви можете встановити версію python для поточного каталогу за допомогою:

$ pyenv local 3.5.2

Ви можете перевірити, запустивши python --version:

$ python --version
Python 3.5.2

1 Homebrew раніше вказував вам це робити після встановлення pyenv, але повідомлення було видалено . Для Zsh та інших оболонок точні кроки можуть бути різними.


Це найпростіше рішення. Зараз я використовую це для перемикання між Python 3 та 2.7.x
Naz Mir

3
Якщо я вже встановив python 2.7 через домашню мову , чи можу я подбати про використання pyenv ? Чи можу я встановити ще один python 2.7 через pyenv ?
Дрейк Гуан

3
Так, ви можете встановити ще один python 2.7 через pyenv. Він встановить цей пітон у $ PYENV_ROOT / версіях. Інший python 2.7, встановлений через домашню мову, може виглядати як "система" при виконанні "pyenv версій".
moliware

5
Мені довелося додати eval "$(pyenv init -)"до свого .profile / .zshrc, щоб працювати pyenv.
Ромер

5
@ilciavo, можливо, доведеться додати eval "$(pyenv init -)"до свого ~ / .bash_profile
Jojanzing

77

Можна встановити обидві версії одночасно.

Для домашньої мови> = 1.5.0:

З 1 березня 2018 року python формула буде оновлена ​​до Python 3.x, в той час як нова python@2формула буде додана саме для Python 2.7.

Дивіться оголошення про зміни тут або остаточний документ про використання Homebrew для Python тут .

Для старших домашніх мов:

Для Python 2.x:

brew install python

Для Python 3.x:

brew install python3

Тепер у вас будуть встановлені обидві версії на вашій машині. Коли ви хочете використовувати версію 2, використовуйте pythonвиконуваний файл. Коли ви хочете використовувати версію 3, використовуйте python3виконуваний файл.


питання про використання обох
meduz

дякую за оновлення! Я дотримувався аналогічного маршруту, але у мене виникли проблеми з необхідністю встановлюватись PYTHONPATHпри кожній зміні ... будь-яка ідея? до того ж, pyenvчудово.
медуз

9
Також зауважте, що, маючи python2 та python3 поруч, цей python вказує на python2, а python3 вказує на python3, як очікувалося. Однак велика проблема полягає в тому, що pip не вказує на pip2, як ви могли очікувати. Це насправді вказує на pip3 (як очевидно, і pip3). Щоб використовувати pip2, явно використовуйте pip2. Трохи непослідовний суфікс без числа для точки python до 2, але суфікс без числа для pip вказує на 3.
JD

5
Це заплутує загальні виконувані файли, такі як pip. python3 замінить python2 pip в цьому випадку, і це буде командою "pip" за замовчуванням
kissgyorgy

1
У відповідь на коментар @ kissgyorgy: У мене виникло це питання, останній коментар до цього питання вирішив це для мене github.com/Homebrew/legacy-homebrew/isissue/50607 , запущений, python3 -m pip install -U --force-reinstall pipа потім python -m pip install -U --force-reinstall pipповернути речі до pipпосилань на Python 2 pip.
Гаррі

11

В даний час Homebrew пропонує дві різні формули для Python 2 і 3. brew install pythonвстановлює python3 та brew install python@2встановлює python2. Більш детально в документах Homebrew:

https://docs.brew.sh/Homebrew-and-Python

Якщо у вас зараз встановлено 2.x через Homebrew, Homebrew надішле вам таке повідомлення, як:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Якщо ви запускаєте:

brew upgrade python

ви повинні вміти робити:

python --version

і

python3 --version

Щоб побачити, які версії Python 2.x та 3.x встановлені.


6

Крім того, ви, ймовірно, можете просто ввести "python3", щоб запустити останню версію python3.x та "python" або "python2", щоб запустити останню встановлену версію 2.x.


4

Існують способи використання обох, але найпростішим рішенням сьогодні є використання pyenv . pyenv дозволяє легко перемикатися між версіями. Ось що я зробив для налаштування:

КРОК 1:

Видаліть усі пітони з комп’ютера

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Видаліть наступне з ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

а також наступне з ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

КРОК2 :

Встановіть pyenv та потрібні версії python

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

КРОК3 :

додати pyenv initдо bash_profileабоbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

КРОК4 :

Перевірте, що встановлено

pyenv versions
  • система (встановлена ​​/Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

КРОК 5:

Виберіть за замовчуванням

pyenv global 3.7.0

Коли проект потребує старішої версії, просто перейдіть у його кореневу папку та запустіть

pyenv local 2.7

1

Використовуйте asdf !

Балада про асфд

Колись там була мова програмування
Існувало багато версій,
тому люди написали для неї менеджер
версій, щоб переходити між версіями для проектів
Різні, старі, нові.

Потім з’явилося більше мов програмування.
Так з'явилося більше менеджерів версій
і багато команд для них

Я встановив їх багато,
я навчився багато команд

Тоді я сказав: ще один менеджер версій,
який я напишу замість цього

Отже, з’явився ще один менеджер
версій asdf-менеджера версій - https://github.com/asdf-vm/asdf

Менеджер версій, такий розширений,
що кожен може створити плагін.
Щоб підтримувати свою улюблену мову.
Більше не встановлювати більше менеджерів версій
або вивчати більше команд

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


Мені здається, що це не конкурентоспроможні інструменти, а той самий інструмент, реалізований один раз (а іноді і не один раз) на кожній мові. Начебто, чому нам також потрібне щось на зразок LSP, IMHO. microsoft.github.io/language-server-protocol/overview
Matt Schlobohm

1

Я думав, що я маю таку ж вимогу - переходити між версіями Python - але я досяг всього, що потрібно, лише з Python3.6, будуючи з джерела замість використання homebrew.

git clone https://git.<theThingYouWantToInstall>

Залежно від репо, перевірте, чи є налаштування файлу MAKE для цієї опції.



-3

Гаразд, я боровся з моїм варивом установки Python3, тому що у мене не було pip3

sudo pip3 command not found

і так я зробив

brew uninstall --force --ignore-dependencies python3

і встановив звичайний Python 3.6.2 з офіційного розповсюдження, і тоді у мене був pip3, і всі компоненти були в порядку.


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