Программа Pyinstaller работает нормально, но если я попытаюсь сжать ее с помощью zip или 7z, это приведет к зависанию Windows

#python #windows #zip #pyinstaller

Вопрос:

У меня есть программа, которую мне нужно распространить в виде exe-файла для моей команды (у них должны быть разные версии python в качестве зависимостей для других вещей). Изначально у меня было все в одном файле, и я использовал аргумент —onefile, и он работал нормально. Но чтобы лучше организовать код, я перешел к нескольким файлам. После устранения некоторых проблем с относительным путем, начиная с запуска exe-файла внутри под_дира в главном каталоге программы, он по-прежнему выполняется без каких-либо проблем. Однако, как только я заархивирую каталог программы для отправки своей команде, если я попытаюсь распаковать его, Windows в основном замедляется до обхода. В конце концов панель задач даже исчезает. Перемещение его также занимает удивительно много времени. Это всего 40 МБ, но тонны файлов. 2586 файлов, 281 папка в свойствах Windows.

Мой список зависимостей также значительно увеличился, так что это, вероятно, актуально:

 >altgraph==0.17
>autopep8==1.5.5
>backcall==0.2.0
>cachetools==4.2.1
>codetiming==1.3.0
>colorama==0.4.4
>decorator==4.4.2
>et-xmlfile==1.0.1
>future==0.18.2
>ipykernel==5.5.0
>ipython==7.21.0
>ipython-genutils==0.2.0
>jedi==0.18.0
>jupyter-client==6.1.12
>jupyter-core==4.7.1
>openpyxl==3.0.7
>parso==0.8.1
>pefile==2019.4.18
>pickleshare==0.7.5
>prompt-toolkit==3.0.17
>py2exe==0.10.3.0
>pycodestyle==2.6.0
>Pygments==2.8.1
>pyinstaller==4.2
>pyinstaller-hooks-contrib==2021.1
>python-dateutil==2.8.1
>pywin32==300
>pywin32-ctypes==0.2.0
>PyYAML==5.4.1
>pyzmq==22.0.3
>six==1.15.0
>toml==0.10.2
>tornado==6.1
>tqdm==4.59.0
>traitlets==5.0.5
>wcwidth==0.2.5
>XlsxWriter==1.3.7
 

Первое, что я попробую завтра, — это удалить ipython из venv, так как это нужно мне только для отладки интерактивной оболочки VS code. Но кроме этого, есть какие-нибудь идеи, почему это могло произойти?

Ответ №1:

Да, оказывается, я был прав. Я удалил следующие пакеты (используя удаление pip после активации venv):

ipykernel ipython ipython-подлинный jupyter-клиент jupyter-кодовое время (кодовое время, вероятно, не связано, но я его больше не использую)

Размер пакета увеличился примерно с 40 МБ до 23 МБ и примерно с 2500 файлов до 42. Теперь нет никаких задержек в застегивании, распаковке, перемещении и т. Д.

Может быть, проблема заключалась в том, что ядро работало во время сборки, и какой-то кэш копировался или что-то в этом роде? Или ipython и pyinstaller просто несовместимы?

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