Создание установщика пакетов в OS X — установка Python, NumPy и других зависимостей

Я хочу создать собственный установщик пакета Mac OS X, создание пакета на самом деле не проблема, реальная проблема - это зависимости, которые необходимо установить; Мне нужно установить Python, NumPy и Matplotlib (только если требуемые версии еще не установлены).

Я слышал очень плохие вещи о приложении Package Maker, я немного читал и уже даже нашел хороший учебник, хотя он довольно устарело. В качестве справки, вот ссылка Apple руководство.

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

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

Так или иначе:

Как лучше всего это сделать? Глупо ли использовать PackageMaker для этой цели? Какая еще литература мне поможет?

Дополнительный:

Какой самый простой способ протестировать мои установщики?


person El Developer    schedule 09.02.2012    source источник
comment
В OS X уже есть python, так что взгляните на комбинацию virtualenv+pip install, завернутую в shell script.   -  person Misha Akovantsev    schedule 12.02.2012
comment
Python, который поставляется с Mac OS X, не будет работать с Matplotlib, вам придется выполнить новую установку с Python.org. В любом случае, я проверю эти два варианта.   -  person El Developer    schedule 12.02.2012
comment
Я упомянул об этом, потому что, если у вас уже есть Python по умолчанию, вы легко можете написать install.sh для установки virtualenv, pip и так далее. О, подожди. Вы можете сделать это даже без Python по умолчанию.   -  person Misha Akovantsev    schedule 12.02.2012
comment
Возможно, но непросто установить numpy, scipy и matplotlib для Python по умолчанию в Lion. Я сделал это в эти выходные, но я думаю, что вы поступили мудро, вместо этого упаковав их все вместе.   -  person Brian B    schedule 17.02.2012
comment
Да, я ненавижу, когда вижу, что пользователь сбит с толку и не может установить программу. Специально для пользователей или людей, которые не имеют опыта работы с UNIX :(   -  person El Developer    schedule 17.02.2012
comment
Python, который поставляется с Mac OS X, не будет работать с Matplotlib, вам придется выполнить новую установку с Python.org. ‹- это, вероятно, неправда.   -  person LaC    schedule 17.02.2012
comment
Извините, я забыл добавить, что это верно для установщика Matplotlib.pkg. s104.photobucket.com/albums/m184 /yosmark/ (см. первые несколько строк) ... Я предположил, что это предложение, я установил Python с python.org, а затем приступил к установке Matplotlib.   -  person El Developer    schedule 17.02.2012
comment
Вы когда-нибудь проверяли приложение Packages, которое, возможно, делает что вы хотите? Как вы решили это в итоге?   -  person MiB    schedule 22.11.2014
comment
Я никогда не смотрел на пакеты, в итоге нам пришлось перейти на использование pip.   -  person El Developer    schedule 22.11.2014
comment
Я знаю, что это старый вопрос, я комментирую только для тех, кто наткнется здесь. Прочитав ваш комментарий к ответу @michael, я думаю, вы хотите, чтобы он облегчил зависимости для процесса разработки; вам, вероятно, нужен докер.   -  person 0xc0de    schedule 11.10.2018


Ответы (3)


Я предполагаю, что вы хотите установить пакеты, которые вы упомянули, потому что вы разрабатываете приложение Python. Вы смотрели PyInstaller? Он «преобразует (упаковывает) программы Python в автономные исполняемые файлы для Windows, Linux, Mac OS X, Solaris и AIX», поэтому вам не нужно беспокоиться о том, что установлено в целевой системе.

И если вы используете PyInstaller, «лишнее» будет легко. Просто скопируйте полученный исполняемый файл на любую другую машину и протестируйте его, запустив.

person michael pan    schedule 12.02.2012
comment
Хотя это решение (я не уверен на 100%), для разработки многим нашим приходится все устанавливать, а они обычно тратят много времени на установку всего, поэтому мне нужно создать инсталлятор и если есть какой-то код редактировать или удалять они могут. Это решение для распространения, а не для разработки. Спасибо за предложение Михаил. - person El Developer; 12.02.2012
comment
Есть ли пакет Python для создания общих установщиков pkg для macOS? - person Royi; 09.03.2019

Что-то вроде /tmp/install.sh:

cd ~
curl -C - -O http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.tar.gz

tar -xzf virtualenv-1.7.tar.gz
cd ./virtualenv-1.7
python setup.py install

cd ~
rm virtualenv-1.7.tar.gz
rm -rd ./virtualenv-1.7

virtualenv myenvfolder
source myenvfolder/bin/activate
easy_install pip 

pip install NumPy
pip install Matplotlib

А потом:

chmod +x /tmp/install.sh;
/tmp/install.sh
person Misha Akovantsev    schedule 12.02.2012
comment
Вы предлагаете добавить этот скрипт в проект Package Installer? В противном случае я хочу избежать любого взаимодействия с терминалом для установки. Вот почему я хочу использовать Package Installer. Спасибо! - person El Developer; 13.02.2012
comment
Боковое примечание: обычно пакеты зависимостей (устанавливаемые pip) перечислены в файле, подобном requirement.txt, и добавлены в систему управления версиями (git), а любой скрипт установщика просто должен иметь pip install -r <path_to>/requirement.txt. - person 0xc0de; 11.10.2018

Возможно, вы можете использовать macports binary-packages или бинарные-архивы? и, возможно, ткань или марионетка. Puppet для OSX.

Macports прост в использовании и позаботится обо всех зависимостях. По умолчанию macports устанавливается в /opt/local, поэтому установка не мешает установке Apple. По умолчанию компилируется из исходников. Некоторые пакеты большие и имеют много зависимостей, поэтому компиляция занимает много времени и требует ресурсов компьютера. Если вы создаете двоичный архив, вам нужно скомпилировать только те, которые соответствуют архитектуре машины/osx-версии. Тогда вам нужно только установить macports и настроить общий ресурс с бинарными архивами. С помощью Fabric или Puppet вы можете автоматизировать сборку и распространение.

Затем, если вы в ближайшем будущем обнаружите, что вам нужен pytable или numexpr, это так же просто, как: sudo port установить py26-tables, и если это нужно другим людям, вы можете сделать из него двоичный архив и поместить его на общий ресурс.

person mfrellum    schedule 17.02.2012
comment
Почему эти решения лучше, чем установщик пакетов Mac? Я открыт для новых решений. - person El Developer; 19.02.2012