Как мои пользователи должны установить приложение командной строки Python для Mac?

1

Я хочу создать приложение командной строки, которое будет запускаться с терминала в Mac OS X (и, в конечном итоге, на других платформах).

Я могу создать скрипт Python и запустить его в Terminal и т.д., Но проблема возникает для пользователя. Я хочу, чтобы пользователь загрузил приложение и установил его как обычно, а затем вызовет приложение, возможно, набрав "appname" непосредственно в Terminal.

Как я могу это сделать? Нужно ли мне обернуть мой файл Python в какое-то приложение Objective-C mini и установить его?

Благодарю!

Теги:
macos
command-line

3 ответа

4
Лучший ответ

Для простого приложения командной строки в Mac OS X вам не нужно будет упаковывать его как пакет приложений OS X, что и делает py2app и устаревший BundleBuilder. И пакет приложений не является обычным способом доступа к утилите командной строки, так как пользователю придется "достичь" и выполнить что-то внутри пакета. Если у вас нет сторонних зависимостей библиотеки C в вашем приложении, самым простым способом может быть его упаковка в виде стандартного дистрибутива Distutils с помощью setup.py. Так как Apple поставляет версии Python и setuptools в последние выпуски OS X, если вы загрузили приложение в Python Package Index, PyPI, пользователь мог бы загрузить и установить приложение с помощью одной команды в окне терминала:

sudo easy_install your_app_name

По умолчанию этот сценарий будет установлен в /usr/local/bin который включен в оболочки PATH по умолчанию для OS X. Если вы не хотите загружать его в PyPI вы все равно можете использовать easy_install для установки из загруженного файла или из URL-адреса. Вам также необходимо будет учитывать любые зависимости от версии Python и какие Python Apple выпускают с выпусками OS X, которые вы собираетесь поддерживать. Существуют команды easy_install-2.x версии.

Кроме того, поскольку Distutils и инструменты более высокого уровня, которые его используют (pip, Distribute, setuptools и др.), Являются кросс-платформенными, вам может не понадобиться ничего делать для поддержки установки в большинстве других дистрибутивов Unix-y.

С другой стороны, если ваше приложение имеет зависимые от версии Python зависимости или имеет зависимости сторонних библиотек, и вам необходимо поддерживать несколько версий OS X, чтобы вы не могли использовать поставляемый Apple Python, тогда лучше использовать py2app и связать копию приложения Python. В этом случае, возможно, вы могли бы попросить пользователя дважды щелкнуть загруженный пакет приложений, который запустил бы скрипт для аутентификации и создания символической ссылки из /usr/local/bin в соответствующий файл сценария в комплекте приложения. Однако это имеет недостаток, заключающийся в том, что зависимо от пути к местоположению приложения. Существуют и другие, более сложные способы сделать что-то подобное без этого ограничения, если это необходимо.

  • 0
    Я бы не рекомендовал команду sudo easy_install . Вы не можете удалить его, и он обходит любой менеджер пакетов, который вы используете. Если вы должны сделать это, вы должны по крайней мере использовать virtualenv.
  • 0
    В Mac OS X нет менеджера пакетов для системы Python.
Показать ещё 2 комментария
1

В дополнение к BundleBuilder и py2app, я думал, что буду упоминать PyInstaller. Это кросс-платформа и, кажется, поддерживает некоторые большие пакеты (например, PyQT и matplotlib) лучше, чем py2app.

1
  • 0
    Обратите внимание, что BundleBuilder устарел и был удален в Python 3.
  • 0
    Утконос также вариант. sveinbjorn.org/platypus

Ещё вопросы

Сообщество Overcoder
Наверх
Меню