Установка Python 3 на Mac
Дата: 15.03.2019 Категория: Python Комментарии: 0
По умолчанию, в MacOSX установлен Python версии 2.7.х которая не совместима с версией 3.х и не подходит для разработки актуальных на сегодняшний день приложений. Однако, установить Python последней стабильной версии на Mac не сложнее, чем установить любую другую программу. Достаточно зайти на официальный сайт https://www.python.org, перейти в раздел Downloads и скачать установочный dmg файл для Mac.
После этого нужно запустить установочный файл и несколько раз нажать кнопку «Продолжить».
Все, Python 3 установлен на операционную систему Mac OSX!
Как проверить версию Python на Mac
Стоит помнить, что по умолчанию на Mac OS X установлена версия Python 2.7.x, поэтому выполнив команду python -V в терминале вы увидите что то вроде этого:
Для того, чтобы запустить только что установленный интерпретатор Python 3 в терминале, нужно выполнить команду python3 :
Соответственно, все программы, написанные на Python 3, должны так же запускаться командой python3 :
ВАЖНО : в интернете можно найти руководства, описывающие процесс замены Python 2 на Python 3 на операционной системе Mac OS X. Не делайте этого! Это может повлиять на работоспособность системы, так как Python 2 используется некоторыми служебными утилитами, а как вы знаете — код этих двух версий Python не совместим.
Как скачать и установить Python на Mac OC X
Это краткий туториал покажет вам, как правильно установить Python 3 на Mac OS X. Существует несколько способов установки Python 3, включая скачивание с [официального сайта Python] (https://www.python.org/downloads/), однако я настоятельно рекомендую вместо этого использовать менеджер пакетов, такой как Homebrew для управления всеми вашими зависимостями в будущем. Это сделает вашу жизнь намного проще.
Какая версия python установлена по умолчанию
Хотя Python 2 установлен по умолчанию на компьютерах Apple, Python 3 — нет. Вы можете проверить это, набрав в Терминале python —version и нажав return:
Чтобы проверить, установлен ли Python 3, попробуйте запустить команду python3 —version . Скорее всего, вы увидите сообщение об ошибке, но стоит проверить. Даже если у вас есть версия Python 3, мы обновим ее до самой последней версии, которая на данный момент в 2019 году 3.7.2.
Установка Xcode и Homebrew
Мы будем использовать менеджер пакетов Homebrew для установки Python 3 — это общая практика. Homebrew необходим пакет Xcode Apple, поэтому для его установки выполните следующую команду:
Нажимайте далее или подтвердить (Xcode — большая программа, ее установка может занять некоторое время).
Далее установите Homebrew:
Чтобы проверить правильность установки Homebrew, выполните следующую команду:
Установка Python 3 на MAC OC X
Чтобы скачать и установить последнюю версию Python, выполните следующую команду:
Подождите пока установятся все зависимости и сам python 3
Теперь давайте подтвердим, какая версия установилась:
Что бы писать код Python 3 из командной строки, введите python3:
Если вы хотите выйти, введите exit() и return или Ctrl-D (одновременно клавиши Control и D).
Что бы запустить оболочку Python 2, просто вводите python :
[Бонус] Первый код в IDLE python для новичков
Теперь Python 3 установлен на ваш Mac, пора приступить к конкретному написанию первого кода. В Python большинство команд основано на контекстных словах в английском языке. Если в C# потребовалось бы ввести команду Console.WriteLine , чтобы вывести запись на экран, в Python это простая команда print .
Я покажу 3 простые задачи, которые есть в каждом коде:
- вывод данных
- операция сложения
- использование условного оператора if
Для нашей первой задачи мы будем использовать IDLE. Это простой редактор кода, поставляется вместе с Python при его установке. Воспользуйтесь поиском и откройте IDLE.
Откроется окно, которое мы называем “оболочкой”. Там отображается результат выполнения кода, но писать код мы будем отдельно. Для этого нам нужно создать новый файл. Мы можем сделать это, нажав File > New File в верхнем меню. Откроется новый пустой файл.
Сохраните файл. Выберите File > Save As , затем сохраните его как helloworld.py . Обычно, в качестве первой программы используют вывод «Hello World» на экран.
Команда, которую мы собираемся использовать, является командой вывода данных в оболочку. Эта команда выглядит следующим образом. В скобках в кавычках находится текст, который мы выведем на экран.
После того, как вы ввели этот код в файл , выберите File > Save в меню, чтобы сохранить обновленную программу, а затем нажмите Run > Run Module из меню. Ваш вывод появится в окне оболочки. Это должно выглядеть примерно так.
Попробуйте распечатать разные фразы на экране, чтобы привыкнуть к коду.
Наша вторая задача — заставить Python считать за нас. Создайте новый файл Calculation.py. На этот раз мы выведем результат сложения двух чисел. Прибавим 9 к 8, для этого нам нужно ввести в наш новый файл команду print , которая выглядит следующим образом.
Как только вы это сделаете, нужно сохранить и затем запустить программу, нажав Run > Run Module . В оболочке появится результат вычислений, вот так:
Попробуйте различные вычисления, чтобы привыкнуть, помните, что вокруг чисел не нужны кавычки. Если вы еще не знакомы с операторами python, рекомендую прочить эту статью.
Наконец, мы создадим еще одну базовую программу, которая будет выводить результат в зависимости от входных данных, с помощью оператора if . Давайте снова откроем новый файл и выпишем следующий синтаксис:
Здесь мы объявляем переменную my_number равную 100, затем создаем конструкцию if-else , чтобы проверить, больше ли my_number числа 50. Если утверждение верно, мы получим «Это большое число», в противном случае мы увидим «Это небольшое число». ». Не забудьте сохранить и запустить программу, как вы это делали в предыдущих примерах.
Вы заметите, что программа печатает «Это большое число», потому что наш номер превышает 50. Попробуйте поменять номер и посмотрите, какой результат получите. Например, что выведет скрипт, если my_number = 50 ?
Настраиваем окружение на Mac OS и собираем автономное приложение с PySide/PyQt
Сейчас все удобнее становится использовать HTML и JavaScript в интерфейсах приложений. И именно такая задача недавно появилась передо мной, с одним важным условием — на выходе должно быть полностью standalone приложение, не требующее установки дополнительных библиотек и способное запуститься в обычном пользовательском окружения.
В силу своего природного обаяния в качестве основного языка был выбран Python + PySide c WebKit на борту, для сборки app-бандла использовался py2app.
Проблемы появились, при первой же попытке запустить приложение на чистой системе — обнаружилось большое количество внешних зависимостей, которые py2app не смог самостоятельно разрешить. Под катом пошаговая инструкция как эта проблема была решена.
В попытках понять почему py2app не включает в бандл все необходимые библиотеки, в одной статье была найдена мысль, что создание полностью автономного приложения с встроенным в Mac OS интерпретатором невозможно и нужно пользовать MacPort. Так и поступим.
Подготовка
XCode
Несет в себе как средства разработки под Mac OS, так и нужный нам gcc.
Я использовал последнюю версию — 4.2, но и с более ранними (3.Х) проблем быть не должно.
Если еще нет, то брать с установочных дисков Mac OS или с сайта Apple (потребуется бесплатная регистрация)
MacPorts
Менеджер пакетов, который позволяет ставить на мак много полезных тулов и библиотек.
Устанавливается стандартным способом (pkg). Брать с MacPorts.org.
После установки можно на всякий случай обновить:
$ sudo port selfupdate
Python
Ставим из MacPorts:
$ sudo port install python27
Если используете другую версию питона, просто замените здесь и далее.
virtualenv
Тул, позволяющий создавать изолированные окружения для питона. Очень удобно, когда нужно иметь несколько версий питона или разные проекты требуют различных библиотек, упрощает дальнейший деплоймент. В нашем случае мы с помощью virtualenv создадим «автономную песочницу» из которой и появится standalone приложение.
$ sudo easy_install virtualenv
В нагрузку ставим virtualenvwrapper, который упрощает работу с окружением:
$ sudo easy_install virtualenvwrapper
PySide
Библиотека для Python, позволяющая использовать всю мощь и силу Qt из привычного языка программирования.
Пытался установить PySide сразу в виртуальное окружение через pip или easy_install (что было бы логичнее), но выяснилось, что PySide не поставляется в необходимом для этих менеджеров пакетов виде, в результате чего куча времени была убита на попытки скомпилировать библиотеку… остановился через пару дней, когда поймал себя за тем, что сидел и правил исходники какой-то сторонней либы =)
В результате идем путем установки предоставляемого разработчиками пекеджа.
Настройка окружения
Подготовительная часть на этом закончена, переходим непосредственно к созданию виртуального окружения и его наполнению.
Создаем виртуальное окружение
/.bash_profile добавляем
export WORKON_HOME=
/Envs
source /usr/local/bin/virtualenvwrapper.sh
/.bash_profile
$ mkdir -p $WORKON_HOME
$ mkvirtualenv —no-site-packages —python=/opt/local/bin/python2.7 py27
# —no-site-packages — говорит, что виртуальное окружение не будет использовать системные пекеджи
# —python=/opt/local/bin/python2.7 — какой интерпретор будет использоваться
# py27 — название окружения
После этого в $WORKON_HOME/py27 будет создана базовая структура каталогов и необходимые файлы. Кроме того окружение станет активным, в начале командной строки появится (py27). В дальнейшем, для активации нужно будет выполнить
$ workon py27
Можно вызвать питон, убедиться, что запустилась правильная версия.
(py27) $ python
Python 2.7.2 (default, Jul 21 2011, 01:27:20)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type «help», «copyright», «credits» or «license» for more information.
>>>
Теперь нужно перенести в новое окружение все библиотеки и модули:
# PySide packages
$ cd /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
$ mv PySide/
/Envs/py27/lib/python2.7/site-packages/
$ mv pysideuic/
# PySide libs
$ cd /usr/lib/
$ sudo mv libpyside-python2.7.*
# Необходимая для PySide библиотека
$ sudo mv libshiboken-python2.7.*
# Qt4 libs
$ cd /Library/Frameworks/
$ cp -pR Qt*
/Envs/py27/lib/
$ cp -pR phonon.framework
/Envs/py27/lib/ #Обратите внимание на отсутствие слеша после framework!
# Остатки Qt нам не нужны, удаляем
$ sudo /Developer/Tools/uninstall-qt.py
Так, почти все готово, осталась финальная полировка и проверка.
virtualenvwrapper кроме удобного способа создания и активации окружений предоставляет хуки на различные события — preactivate, postactivate, predeactivate, postdeactivate и прочие (полный список). Нас сейчас интересует postactivate, в который мы добавим переменные, которые будут говорить где искать в нашем окружении библиотеки и разные модули.
$ vi
/Envs/py27/bin/postactivate
# Добавляем туда
export DYLD_FRAMEWORK_PATH=
/Envs/py27/lib/
export DYLD_LIBRARY_PATH=
Быстрая проверка:
$ workon py27
(py27) $ python
Python 2.7.2 (default, Jul 21 2011, 01:27:20)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type «help», «copyright», «credits» or «license» for more information.
>>> import PySide
>>> PySide
>>>
Если вы все сделали правильно — то результат должен быть примерно таким. Если словили кучу ошибок, то… возможны варианты 🙂
py2app и проверка боем
Теперь все готово к написанию тестового приложения — qt_test.py:
#!/usr/bin/env python
import sys
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import *
web = QWebView()
web.load(QUrl(«http://www.pyside.org/»))
web.show()
Проверяем
$ workon py27
(py27) $ python qt_test.py
py2app
Пришла очередь py2app, который поможет собрать наше приложение в полноценный бандл. Кроме прочего разработчики virtualenv заботливо положили в наше виртуальное окружение еще один менеджер пакетов pip, с помощью которого мы и поставим py2app:
$ workon py27
(py27) $ pip install py2app
Для генерации бандла py2app использует специальный файл — setup.py. Как его создать с нуля хорошо рассказано в доке, а мы воспользуемся уже готовым:
В папочке dist появится app-бандл, который вы непременно можете запустить! )
Весь алгоритм проверялся на Mac OS X 10.6.8, а получившийся бандл тестировался на такой же, но чистой системе.