Как запустить файл python из командной строки mac os

Обновлено: 03.07.2024

Python на Macintosh под управлением Mac OS X в принципе очень похож на Python на любой другой платформе Unix, но есть ряд дополнительных функций, таких как IDE и диспетчер пакетов, на которые стоит обратить внимание.

4.1. Получение и установка MacPython¶

Mac OS X 10.8 поставляется с Python 2.7, предустановленным Apple. Если нужно, вы можете установить самую последнюю версию Python 3 с веб-сайта Python. Здесь доступна текущая «универсальная двоичная» сборка Python, которая изначально работает на новом процессоре Intel и устаревших процессорах PPC Mac.

После установки вы получите несколько вещей:

  • Папка Python 3.8 в папке Applications . Здесь вы найдете IDLE, среду разработки, которая является стандартной частью официальных дистрибутивов Python; и PythonLauncher, который обрабатывает скрипты Python двойным щелчком из Finder.
  • Фреймворк /Library/Frameworks/Python.framework , который включает исполняемый файл Python и библиотеки. Установщик добавляет это местоположение в путь к вашей оболочке. Чтобы удалить MacPython, вы можете просто удалить эти три вещи. Символьная ссылка на исполняемый файл Python находится в /usr/local/bin/.

Предоставленная Apple сборка Python установлена в /System/Library/Frameworks/Python.framework и /usr/bin/python соответственно. Вы никогда не должны изменять или удалять их, поскольку они контролируются Apple и используются программным обеспечением Apple или сторонними производителями. Помните, что если вы решите установить более новую версию Python с официального сайта, у вас будут две разные, но функциональные установки Python на вашем компьютере, поэтому важно, чтобы ваши пути и способы использования соответствовали тому, что вам нужно.

IDLE включает меню справки, которое позволяет получить доступ к документации Python. Если вы новичок в Python, вам следует начать читать введение в этот документ.

Если вы знакомы с Python на других платформах Unix, вам следует прочитать раздел о запуске сценариев Python из оболочки Unix.

4.1.1. Как запустить Python скрипт¶

Лучший способ начать работу с Python в Mac OS X — использовать интегрированную среду разработки IDLE, см. раздел IDE и использовать меню «Help» во время работы IDE.

Если вы хотите запускать скрипты Python из командной строки окна терминала или из Finder, вам сначала понадобится редактор для создания вашего скрипта. Mac OS X поставляется с рядом стандартных редакторов командной строки Unix, среди которых vim и emacs. Если вам нужен редактор, более похожий на Mac, BBEdit или TextWrangler от Bare Bones Software — хороший выбор, как и TextMate. Другие редакторы включают Gvim и Aquamacs.

Чтобы запустить сценарий из окна терминала, вы должны убедиться, что /usr/local/bin находится в пути поиска вашей оболочки.

Чтобы запустить сценарий из Finder, у вас есть два варианта:

  • Перетащите его на PythonLauncher
  • Выберите PythonLauncher в качестве приложения по умолчанию, чтобы открыть ваш скрипт (или любой другой скрипт .py) через информационное окно Finder, и дважды щелкните его. У PythonLauncher есть различные настройки для управления запуском вашего скрипта. Опциональное перетаскивание позволяет вам изменить их для одного вызова или использовать его меню Preferences, чтобы изменить вещи глобально.

4.1.2. Запуск скриптов с графическим интерфейсом¶

В более старых версиях Python есть одна особенность Mac OS X, о которой вам нужно знать: программы, которые взаимодействуют с оконным менеджером Aqua (другими словами, всё, что имеет графический интерфейс), должны запускаться особым образом. Для запуска таких сценариев используйте pythonw вместо python.

С Python 3.8 вы можете использовать python или pythonw.

4.1.3. Конфигурация¶

Python в OS X учитывает все стандартные переменные среды Unix, такие как PYTHONPATH , но установка этих переменных для программ, запускаемых из Finder, нестандартна, поскольку Finder не считывает ваши .profile или .cshrc при запуске. Вам необходимо создать файл

/.MacOSX/environment.plist . Подробности см. в техническом документе Apple QA1067.

Дополнительные сведения об установке пакетов Python в MacPython см. в разделе Установка дополнительных пакетов Python .

4.2. IDE¶

MacPython поставляется со стандартной средой разработки IDLE. Хорошее введение в использование IDLE можно найти на ресурсе.

4.3. Установка дополнительных пакетов Python¶

Есть несколько способов установить дополнительные пакеты Python:

  • Пакеты могут быть установлены через стандартный режим Python distutils ( python setup.py install ).
  • Многие пакеты также можно установить через расширение setuptools или обёртку pip.

4.4. Программирование графического интерфейса пользователя на Mac¶

Существует несколько вариантов создания приложений с графическим интерфейсом пользователя на Mac с помощью Python.

4.5. Распространение приложений Python на Mac¶

Стандартный инструмент для развертывания автономных приложений Python на Mac — py2app. Дополнительную информацию об установке и использовании py2app можно найти на сайте.

4.6. Другие источники¶

Список рассылки MacPython — отличный ресурс поддержки для пользователей Python и разработчиков на Mac.


Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её заказчику. И в этот момент возникают вопросы, о которых многие даже не задумываются.

Во-первых, так может оказаться, что вы разработали супер крутой алгоритм, которого ни у кого нет, и показывать его хочется только избранным.

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

И, наконец, хочется, чтобы конечное приложение работало быстрее, чем в среде разработки.

И вот тут настало время скомпилировать Python-код. Меня зовут Руслан, я старший разработчик компании «Цифровое проектирование». Сегодня я расскажу, как выбрать тот самый компилятор из множества доступных.

AOT/JIT

Компиляция – это сборка программы, включающая: трансляцию всех модулей программы, написанных на языке программирования высокого уровня, в эквивалентные программные модули на низкоуровневом языке, близком к машинному коду, или на машинном языке и сборку исполняемой программы. Существует два вида компиляции:

AOT-компиляция (ahead-of-time) – компиляция перед исполнением программы. Т.е. программа компилируется один раз, в результате компиляции получается исполняемый файл.

JIT-компиляция (just-in-time) – компиляция во время исполнения программы. Т.е. программа (а точнее, блоки программы) компилируется много раз - при каждом запуске.

Бенчмарк

Так как одной из целей является ускорение, необходимо оценить, насколько быстро работает скомпилированный код. В качестве бенчмарка будем использовать pyperfomance. К сожалению, pyperfomance не подошел для Cython и Pythran, потому что не позволяет визуализировать все возможности языка. Ускорения для Cython без модификации кода получить не удалось, а Pythran не умеет в пользовательские классы. Для них воспользуемся вычислением числа пи:

Эксперименты будем проводить на процессоре Intel Core i7 10510U. На CPython 3.9.7 время вычисления числа пи до 100.000.000 знака заняло 5.82 секунды.

AOT-компиляция Python

PyInstaller

PyInstaller упаковывает приложения Python в автономные исполняемые файлы в Windows, GNU / Linux, Mac OS X, FreeBSD, Solaris и AIX.

Устанавливается через pip:

pip install pyinstaller

После установки для создания исполняемого файла достаточно выполнить команду:

В результате будет создано:

*.spec – файл спецификации (используется для ускорения будущих сборок приложения, связи файлов данных с приложением, для включения .dll и .so файлов, добавление в исполняемый файл параметров runtime-а Python);

build/ – директория с метаданными для сборки исполняемого файла;

dist/ – директория, содержащая все зависимости и исполняемый файл.

Сборку приложения можно настроить с помощью параметров командной строки:

--name – изменение имени исполняемого файла (по умолчанию, такое же, как у сценария);

--onefile – создание только исполняемого файла (по умолчанию, папка с зависимостями и исполняемый файл);

--hidden-import – перечисление импортов, которые PyInstaller не смог обнаружить автоматически;

--add-data – добавление в сборку файлов данных;

--add-binary – добавление в сборку бинарных файлов;

--exclude-module – исключение модулей из исполняемого файла;

--key – ключ шифрования AES256. Да, приложение не будет содержать исходного кода, но его можно декомпилировать, например, так: Pyinstaller Extractor (.exe → .pyc) и uncompile6 (.pyc → .py). Для скрытия исходного кода можно обфусцировать байт-код Python с помощью шифрования.

У PyInstaller есть ограничения. Он работает с Python 3.5–3.9. Поддерживает создание исполняемых файлов для разных операционных систем, но не умеет выполнять кросскомпиляцию, т. е. необходимо генерировать исполняемый файл для каждой ОС отдельно. Более того, исполняемый файл зависит от пользовательского glibc, т. е. необходимо генерировать исполняемый файл для самой старой версии каждой ОС.

PyInstaller знает о многих Python-пакетах и умеет их учитывать при сборке исполняемого файла. Но не о всех. Например, фреймворк uvicorn практически весь нужно явно импортировать в файл, к которому будет применена команда pyinstaller. Полный список поддерживаемых из коробки пакетов можно посмотреть здесь.

Cython

Cython - это оптимизирующий статический компилятор как для языка программирования Python, так и для расширенного языка программирования Cython. С его помощью можно код на Python транслировать в С и затем скомпилировать в бинарник, совместимый с CPython. Компиляцию придется делать под все операционные системы и архитектуры процессора.

Ставится Cython через pip:

pip install Cython

Рассмотрим его работу на примере с вычислением числа пи:

Немного модифицируем нашу функцию:

Cython → C:

cython -2 pi_approximater.pyx -o pi_approximater.c

Компилируем С-шный код:

gcc -g -O2 -shared -o pi_approximater.so pi_approximater.c python-config --includes --ldflags -fPIC

И замеряем время на бенчмарке: 3,66 секунды.

А что делать, если в нашем проекте несколько файлов, которые нужно скомпилировать? Тогда нужно использовать так называемый сценарий сборки. С его помощью можно модернизировать сборку в зависимости от операционной системы, указывать несколько файлов, которые необходимо скомпилировать, и многое другое.

Создадим файл build.py:

Запустим: python build.py build_ext –-inplace

В результате будет сгенерирован .so/.dll файл.

Nuitka

Nuitka способна упаковывать приложения Python в автономные исполняемые файлы, а также транслировать Python-код в С для его последующей компиляции. Работает с разными версиями Python (2.6, 2.7, 3.3 - 3.9).

Ставится через pip:

pip install nuitka

Для генерации исполняемого файла достаточно выполнить команду:

python -m nuitka --follow-import some_program.py

Для компиляции модуля:

python -m nuitka --module some_module.py

Для компиляции пакета:

python -m nuitka --module some_package --include-package = some_package

Pythran

Pythran – статический компилятор Python, позиционирующий себя как ориентированный на научные вычисления и использующий преимущества многоядерных процессоров и блоков инструкций SIMD. Он транслирует Python-код, аннотированный описаниями интерфейса, в C++. До версии 0.9.5 (включительно) Pythran поддерживал Python 3 и Python 2.7. Последние версии поддерживают только Python 3.

pip install pythran

Генерируем бинарный файл <имя файла>.so:

pythran <имя файла>.py

Pythran по умолчанию не умеет в пользовательские классы, поэтому при попытке их компиляции будет выброшена ошибка:

Top level statements can only be assignments, strings,functions, comments, or imports

Добавим комментарий аннотации функции:

Скомпилируем и бенчмарк выдает 0,00007 секунды.

cx-Freeze

cx-Freeze – это набор скриптов и модулей преобразования скриптов Python в исполняемые файлы. cx_Freeze - кроссплатформенный. Он поддерживает Python 3.5.2 и выше.

Ставится с помощью pip:

pip install cx_Freeze

Для генерации исполняемого файла достаточно выполнить команду:

cxfreeze <имя файла>.py

Сборку можно настроить с помощью параметров командной строки:

-h, --help - справка;

-O - оптимизировать сгенерированный байт-код согласно PYTHONOPTIMIZE;

-c, --compress - сжать байт-код в zip-файлах;

-s, --silent - выводить только предупреждения и ошибки;

--target-dir=DIR, --install-dir=DIR - каталог, в который следует поместить целевой файл и все зависимые файлы.

Также возможно использование сценария сборки, например, так:

Сборка исполняемого файла:

python setup.py build

JIT-компиляция Python

JIT-компиляция не позволяет скрывать исходники или создавать автономный исполняемый файл, но дает возможность значительно ускорить выполнение программы.

PyPy

PyPy - интерпретатор языка программирования Python 2.7 и Python 3.7. Он написан на RPython и содержит:

компилятор байт-кода, отвечающий за создание объектов кода Python из исходного кода пользовательского приложения;

оценщик байт-кода, ответственный за интерпретацию объектов кода Python;

стандартное объектное пространство, отвечающее за создание и управление объектами Python, видимыми приложением.

PyPy поддерживает сотни библиотек Python, включая NumPy.

Основные особенности (сравнение с CPython):

Скорость. При выполнении длительно выполняющихся программ, когда значительная часть времени тратится на выполнение кода Python, PyPy может значительно ускорить ваш код.

Использование памяти. Программы Python, требующие много памяти (несколько сотен Мб или более), могут занимать меньше места, чем в CPython. Однако это не всегда так, поскольку зависит от множества деталей. Также базовый уровень потребления оперативной памяти выше, чем у CPython.

PyPy работает на Mac, Linux (не все дистрибутивы) или Windows.

Для запуска кода с помощью PyPy вместо команды python3 (как c помощью CPython) достаточно воспользоваться командой pypy3:

Pyston

Pyston - это форк CPython 3.8.8 с дополнительной оптимизацией производительности. В настоящее время он поддерживает установку только из исходников. Или с помощью pyenv.

В Pyston поддерживаются все возможности CPython, в том числе C API для разработки расширений на языке Си. Среди основных отличий Pyston от CPython помимо общих оптимизаций выделяется использование DynASM JIT и inline-кэширования.

Заключение

Итак, мы рассмотрели 5 фреймворков AOT-компиляции Python. Для любителей аналитики, ниже приведена таблица со сравнительным анализом.

скачать python 3 для mac oc x

Какая версия python установлена по умолчанию

Хотя Python 2 установлен по умолчанию на компьютерах Apple, Python 3 — нет. Вы можете проверить это, набрав в Терминале python --version и нажав return:

Установка 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 для новичков

Я покажу 3 простые задачи, которые есть в каждом коде:

  • вывод данных
  • операция сложения
  • использование условного оператора if

Для нашей первой задачи мы будем использовать IDLE. Это простой редактор кода, поставляется вместе с Python при его установке. Воспользуйтесь поиском и откройте IDLE.

Откроется окно, которое мы называем “оболочкой”. Там отображается результат выполнения кода, но писать код мы будем отдельно. Для этого нам нужно создать новый файл. Мы можем сделать это, нажав File > New File в верхнем меню. Откроется новый пустой файл.

python IDLE для mac oc x

Сохраните файл. Выберите File > Save As , затем сохраните его как helloworld.py . Обычно, в качестве первой программы используют вывод «Hello World» на экран.

Команда, которую мы собираемся использовать, является командой вывода данных в оболочку. Эта команда выглядит следующим образом. В скобках в кавычках находится текст, который мы выведем на экран.

После того, как вы ввели этот код в файл , выберите File > Save в меню, чтобы сохранить обновленную программу, а затем нажмите Run > Run Module из меню. Ваш вывод появится в окне оболочки. Это должно выглядеть примерно так.

python IDLE для mac oc x: Hello World

Попробуйте распечатать разные фразы на экране, чтобы привыкнуть к коду.

Наша вторая задача — заставить Python считать за нас. Создайте новый файл Calculation.py. На этот раз мы выведем результат сложения двух чисел. Прибавим 9 к 8, для этого нам нужно ввести в наш новый файл команду print , которая выглядит следующим образом.

Как только вы это сделаете, нужно сохранить и затем запустить программу, нажав Run > Run Module . В оболочке появится результат вычислений, вот так:

python IDLE для mac oc x: Calculation

Попробуйте различные вычисления, чтобы привыкнуть, помните, что вокруг чисел не нужны кавычки. Если вы еще не знакомы с операторами python, рекомендую прочить эту статью.

Наконец, мы создадим еще одну базовую программу, которая будет выводить результат в зависимости от входных данных, с помощью оператора if . Давайте снова откроем новый файл и выпишем следующий синтаксис:

Здесь мы объявляем переменную my_number равную 100, затем создаем конструкцию if-else , чтобы проверить, больше ли my_number числа 50. Если утверждение верно, мы получим «Это большое число», в противном случае мы увидим «Это небольшое число». ». Не забудьте сохранить и запустить программу, как вы это делали в предыдущих примерах.

Вы заметите, что программа печатает «Это большое число», потому что наш номер превышает 50. Попробуйте поменять номер и посмотрите, какой результат получите. Например, что выведет скрипт, если my_number = 50 ?

Код, написанный на языке Python, может храниться в редакторе кода, IDE или файле. И он не будет работать, если не знать, как его правильно запускать.

В этом материале рассмотрим 7 способов запуска кода, написанного на Python. Они будут работать вне зависимости от операционной системы, среды Python или местоположения кода.

Где запускать Python-скрипты и как?

Python-код можно запустить одним из следующих способов:

  1. С помощью командной строки операционной системы (shell или терминал);
  2. С помощью конкретной версии Python или Anaconda;
  3. Использовать Crontab;
  4. Запустить код с помощью другого Python-скрипта;
  5. С помощью файлового менеджера;
  6. Использовать интерактивный режим Python;
  7. Использовать IDE или редактор кода.

Запуск Python-кода интерактивно

Для запуска интерактивной сессии нужно просто открыть терминал или командную строку и ввести python (или python3 в зависимости от версии). После нажатия Enter запустится интерактивный режим.

Вот как запустить интерактивный режим в разных ОС.

Интерактивный режим в Linux

Откройте терминал. Он должен выглядеть приблизительно вот так :

терминал Linux запуск python

После нажатия Enter будет запущен интерактивный режим Python.

Интерактивный режим в macOS

На устройствах с macOS все работает похожим образом. Изображение ниже демонстрирует интерактивный режим в этой ОС.

терминал MacOs запуск python

Интерактивный режим в Windows

В Windows нужно открыть командную строку и ввести python . После нажатия Enter появится приблизительно следующее:

терминал Windows запуск python

Запуск Python-скриптов в интерактивном режиме

В таком режиме можно писать код и исполнять его, чтобы получить желаемый результат или отчет об ошибке. Возьмем в качестве примера следующий цикл.

Запуск Python-скриптов в интерактивном режиме

Этот код должен выводить целые числа от 0 до 5. В данном случае вывод — все, что появилось после print(i) .

Для выхода из интерактивного режима нужно написать следующее:

И нажать Enter. Вы вернетесь в терминал, из которого и начинали.

Есть и другие способы остановки работы с интерактивным режимом Python. В Linux нужно нажать Ctrl + D, а в Windows — Ctrl + Z + Enter.

Стоит отметить, что при использовании этого режима Python-скрипты не сохраняются в локальный файл.

Как выполняются Python-скрипты?

Отличный способ представить, что происходит при выполнении Python-скрипта, — использовать диаграмму ниже. Этот блок представляет собой скрипт (или функцию) Python, а каждый внутренний блок — строка кода.

При запуске скрипта интерпретатор Python проходит сверху вниз, выполняя каждую из них. Именно таким образом происходит выполнение кода.

Но и это еще не все.

Блок-схема выполнения кода интерпретатором

  • Шаг 1: скрипт или .py-файл компилируется, и из него генерируются бинарные данные. Готовый файл имеет расширение .pyc или .pyo.
  • Шаг 2: генерируется бинарный файл. Он читается интерпретатором для выполнения инструкций.

Это набор инструкций, которые приводят к финальному результату.

Иногда полезно изучать байткод. Если вы планируете стать опытным Python-программистом, то важно уметь понимать его для написания качественного кода.

Это также пригодится для принятия решений в процессе. Можно обратить внимание на отдельные факторы и понять, почему определенные функции/структуры данных работают быстрее остальных.

Как запускать Python-скрипты?

Для запуска Python-скрипта с помощью командной строки сначала нужно сохранить код в локальный файл.

Возьмем в качестве примера файл, который был сохранен как python_script.py. Сохранить его можно вот так:

Сохранить скрипт в текстовом редакторе достаточно легко. Процесс ничем не отличается от сохранения простого текстового файла.

Но если использовать командную строку, то здесь нужны дополнительные шаги. Во-первых, в самом терминале нужно перейти в директорию, где должен быть сохранен файл. Оказавшись в нужной папке, следует выполнить следующую команду (на linux):

После нажатия Enter откроется интерфейс командной строки, который выглядит приблизительно следующим образом:

интерфейс командной строки

Теперь можно писать код и с легкостью сохранять его прямо в командной строке.

Читайте также: