Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2009 12:20:16

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Всем доброго!
Подскажите пожалуйста как можно уменьшить размер проги скомпилированной c помощью py2exe.
Я подключаю только три модуля: sys, tkinter, _winreg. Ну и еще иногда пользуюсь tile.
А то 8 с лишним мегов, очень круто!



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Янв. 9, 2009 12:32:44

SvartalF
От:
Зарегистрирован: 2008-06-29
Сообщения: 73
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Python все-таки интерпретируемый язык :)
Вы пробовали использовать какие-нибудь упаковщики exe-файлов, вроде upx?



Офлайн

#3 Янв. 9, 2009 12:48:40

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Cover Story с одинаковыми проблемами воюем :)
1. Кодировки. Выкидываем все, не используемые. Это касается кодирокок питона и из папки tcl
2. Не нужные модули. Во тут уж методом подбора. У меня приложение с ttk, PIL и прочее по мелочи, папка library.zip занимает 666 кб, думаю можно еще уменьшить
3. Неиспользуемые pyd, такие как unicodedata.pyd и bz.pyd… Как правило они не используются, хотя копируются в папку dist
4. Из tcl спокойно удаляем папку demos
5. В setup.py указываешь optimize:2, тогда все библиотеки компилятся в pyo вместо pyc, что еще чуть чуть уменьшит размер
В итоге, 6 мб у меня получилось. (напомню, питон 2.5.4, tcl/tk с tile, PIL)
Сжатое в rar или 7z- 2 mb. То есть этот размер- размер приложения для распространения по сети. (+100-300 кб, если используеш инсталлер какой нибудь)



Отредактировано (Янв. 9, 2009 12:52:19)

Офлайн

#4 Янв. 9, 2009 15:19:35

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

SvartalF Спасибо посмотрю вроде штука интересная!
igor.kaist В который раз спасибо! Сократил папку dist до 5,3 МБ



Python 2.7.3
Pyside 1.1.2

Офлайн

#5 Янв. 9, 2009 15:26:45

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Где то промелькала инфа о том, что pythonХХ.dll можно каким то образом скомпилить, чтоб занимал меньше места. У кого есть соображения по этому поводу?
Добавлено:
Нашел вот что:
if *at least* the CJK codecs (which are like 1Mb big) are splitted out of
python25.dll.



Отредактировано (Янв. 9, 2009 15:55:14)

Офлайн

#6 Янв. 15, 2009 06:00:10

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

У меня возник еще один вопрос!
Можно ли подготовить набор библиотек и модулей для работы с скомпилированным exe файлом.
Например у меня есть несколько программ на Питоне и чтобы не засорять компьютер повторными библиотеками, я беру просто скомпилированный exe'шник и подсоединяю его к этим библиотекам. Такое возможно?



Python 2.7.3
Pyside 1.1.2

Офлайн

#7 Янв. 15, 2009 07:42:04

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

А ты попробуй :)
сделай уборку А, затем в другом месте уборку В. Теперь А.exe замени на В.еxe, все будет работать.



Офлайн

#8 Янв. 15, 2009 14:41:20

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

igor.kaist
Тебе, как опытному пользователю py2exe ;), наверное, есть много чего добавить к этому:
http://forum.script-coding.info/viewtopic.php?id=2494
Может, это… того… присоединишься? (извиняюсь за наглость :))



Офлайн

#9 Фев. 6, 2009 14:32:35

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Пример для консольного варианта, у меня размер папки dist получился 3151 Кб в архиве zip 1845 кб причем “python setup.py py2exe” набирать не нужно просто запускаете скрипт на исполнение.

# Py2Exe version 0.6.3 setup file for console programs.
# If this is a windows GUI application replace the last line with
# windows = [{"script": 'myFile.py'}] )
#
# Enter the file name of your own .py code file in the last line, lets say it's test1.py
# so the last line should be: console = [{"script": 'test1.py'}] )
# then save this program as p2e_test1.py to the same directory where your code file is located
# Now run p2e_test1.py ...
#
# Two subfolders will be created, called build and dist.
# The dist folder contains your .exe file, MSVCR71.dll and w9xpopen.exe (needed for os.popen() only)
# Your .exe file contains your byte code, all needed modules and the Python interpreter.
# The MSVCR71.dll can be distributed, but is often already in the system32 folder.
# The build folder can be deleted.
# tested with Python24 and Py2Exe v0.6.3 by vegaseat 27may2006

from distutils.core import setup
import py2exe
import sys

# no arguments
if len(sys.argv) == 1:
sys.argv.append("py2exe")

# creates a standalone .exe file, no zip files
setup( options = {"py2exe": {"compressed": 1, "optimize": 2, "ascii": 1, "bundle_files": 1}},
zipfile = None,
# replace myFile.py with your own code filename here ...
console = [{"script": 'myFile.py'}] )



Python 2.7.3
Pyside 1.1.2

Отредактировано (Фев. 6, 2009 14:36:40)

Офлайн

#10 Фев. 6, 2009 17:08:04

SAnty
От:
Зарегистрирован: 2006-04-21
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

py2exe: лишние файлы!

Добавте поле excludes в файл setup.py, в нём перечислите модули которые не должны входить в готовый модуль.


from distutils.core import setup
import py2exe
import sys

# no arguments
if len(sys.argv) == 1:
sys.argv.append("py2exe")

# creates a standalone .exe file, no zip files
setup( options = {"py2exe": {"compressed": 1, "optimize": 2, "ascii": 1, "bundle_files": 1
,"excludes":'calendar' }},
zipfile = None,
# replace myFile.py with your own code filename here ...
console = [{"script": 'module1.py'}] )
Небольшое описание py2exe есть здесь http://code.google.com/p/gui2exe/wiki/Py2ExeSwitches . Там же можна скачать извесную утилиту GUI2exe.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version