Как упаковать работающую программу на Python в 1 файл - PullRequest
0 голосов
/ 01 марта 2012

Я планирую упаковать мою большую программу на Python в один файл;

Мои требования:

  • только 1 файл для загрузки
  • файл может иметь контрольную сумму
  • в идеале файл содержит некоторую информацию о версии
  • использует системный питон

. До сих пор лучшими кандидатами для формата пакета являются .egg и .zip.

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

Что я намерен сделать:

Встроенная система загружает мой код, например, package.zip;он запускает мой код, например, python2 package.zip мой код может проверить себя сам, например, md5sum sys.argv[0].Контрольная сумма сообщается и отслеживается на моем сервере.

Ответы [ 3 ]

2 голосов
/ 01 марта 2012

Zip-файлы немного волшебны, так как встроенный импорт автоматически импортирует их.Я никогда не пытался импортировать яйца напрямую, поэтому я не знаю, сработает ли это или нет.

Большим преимуществом, которое вы получаете от использования яиц, является то, что вы можете указать зависимости для вашего пакета.Это может не иметь большого значения для вас.С помощью яйца вы устанавливаете требования, публикуете в pypi (если хотите) и облегчаете жизнь своим пользователям.

После того, как все упаковано, pip (http://pypi.python.org/pypi/pip) облегчает работу с вашим пакетомВот примеры этого разорванного прямо со страницы пипса -

$ pip install simplejson

$ pip install --upgrade simplejson

$ pip uninstall simplejson

Вы получите много удовольствия от небольшой работы. Если вы не хотите подталкивать свои вещи к пипи, вы можетеопубликуйте его на своем секретном Pypi (прочитайте веб-сервер) и укажите, что pip использует другой URL для поиска пакетов.

$ pip install -i http://mycoolserver.com/pypi

Я не эксперт по PIP, но с простой установкой (предшественником pip) вы могли бысоздать свой собственный PYPI довольно просто с помощью Apache. Просто опубликуйте каталог pypi и дайте ему показывать индексы (я думаю, это правильная терминология), чтобы вы могли просматривать файловую систему для pypi. С помощью этой установки создайте каталог с именемза вашей посылкой и бросьте туда яйца. Это "просто работает" (хорошо для меня: -))

1 голос
/ 01 марта 2012

яйцо - это почтовый файл.

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

0 голосов
/ 07 марта 2012

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

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

Я принял это предположение, поскольку большинство пользователей Linux ожидают, что это будет архив с файлом setup.py, а не один исполняемый файл.Что касается Mac OS X, я действительно не знаю.

...