2012-03-02 3 views
13

Требование состоит в том, чтобы сделать приложение переносимым, а не установщиком. Я посмотрел на py2exe, и я боюсь, что мне нужно запустить install, если я хочу запустить его под Windows.Как сделать переносное настольное приложение для python?

Итак, мой вопрос: могу ли я сделать портативное настольное приложение python без какой-либо установки (все зависимости и библиотеки упакованы), перетаскивание с USB/CD запустит его?

(Это очень важно, потому что это головная боль для пользователей установить библиотеку C++ Run Time ...)

Спасибо.

+0

Вы говорите, что это головная боль для пользователей, чтобы установить библиотеку времени выполнения C++ ... почему бы не включить ее в установщике вашей программы? Я установил программное обеспечение Python с py2exe с помощью Inno Setup для установки. Я просто установщик запускает среду исполнения Visual C++, распространяемую с помощью флагов '/ qb', поэтому пользователю ничего не нужно делать. –

+0

@ Series8217 Спасибо. Я думаю, что могу это сделать, но главное - без установщика; если он может быть портативным, хорошо! – CppLearner

ответ

9

Вы можете использовать этот метод с py2exe: http://www.py2exe.org/index.cgi/SingleFileExecutable

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

Существует также пример, который поставляется с py2exe, который использует Inno Setup вместо NSIS для достижения того же результата. Он установлен на site-packages\py2exe\samples\extending.

+0

Спасибо. Я прочитал его, пожалуйста, исправьте, если я ошибаюсь: после компиляции установщика я могу скопировать всю папку на другой компьютер. Запустите исполняемый файл, он будет генерировать соответствующие файлы, такие как dll в папке tmp, которые будут удалены после закрытия пользователем приложения. Мое приложение требует настойчивости, потому что у нас есть база данных XML, поэтому мы не хотим уничтожать записи. Как узнать, что создано в tmp? Благодарю. – CppLearner

+0

@CppLearner Правильно. После компиляции «установщика» единственным исполняемым файлом, который требуется переместить на другой компьютер, является «установщик». Когда вы запускаете этот исполняемый файл, он распаковывает его содержимое (приложение exe и требуемые файлы DLL и т. Д.), Запускает приложение, а когда приложение выходит из него, удаляет временную папку. Вы можете управлять этим поведением, отредактировав пример скрипта NSIS. –

+1

@CppLearner Если вам нужны постоянные данные, сохраните его там, где он должен идти ... возможно, '% homepath% \ AppData \ MyXMLDB' или что-то подобное. Тогда приложение всегда может найти его, независимо от того, откуда вы его выполняете. –

3

Вы также можете использовать fork Portable Python и изменить его, чтобы добавить приложения и библиотеки, которые вам нужны. Он работает с любым диском/сетевым местоположением без установки, и вы можете выбрать, хотите ли вы, что ядро ​​Python основано на 2.xx или 3.xx

Смежные вопросы