Как мои пользователи должны установить приложение командной строки Python для Mac? - PullRequest
1 голос
/ 28 октября 2011

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

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

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

Спасибо!

Ответы [ 3 ]

4 голосов
/ 28 октября 2011

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

sudo easy_install your_app_name

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

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

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

1 голос
/ 28 октября 2011

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

1 голос
/ 28 октября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...