PyInstaller и PySide, как включить папку imageformats?

Мне неловко задавать два вопроса за час, ну да ладно.

Я создаю довольно сложное приложение, используя Python и PySide. Наконец-то приближается день релиза, поэтому я хочу собрать это приложение в виде исполняемого файла. Я использую PyInstaller для создания бинарного исполняемого файла.

Часть этого приложения загружает некоторые изображения JPEG. У меня были проблемы с загрузкой этих изображений в мое приложение (они просто не отображались), поэтому мне пришлось сделать это:

path = os.getcwd()
app.addLibraryPath(path) #app being QApplication()

Это заставило его работать (этот путь содержит папку imageformats, которая содержит qjpeg4.dll и другие плагины для загрузки изображений)

Однако теперь я столкнулся с той же проблемой при упаковке с помощью PyInstaller. Я должен использовать флаг --onefile, но даже если я этого не делаю, я вижу, что PyInstaller не включает папку imageformats — ее нигде нет.

Я знаю, что это проблема, потому что, когда я вручную копирую/вставляю папку imageformats в папку, где находится exe, приложение работает должным образом.

Есть ли способ заставить PyInstaller включить папку, которую я укажу, в частности эту папку форматов изображений?


person Bo Milanovich    schedule 17.11.2012    source источник
comment
У вас есть файлы JPEG в файле ресурсов Qt? Проблема с поиском qjpeg4.dll или с загрузкой самих изображений?   -  person sid16rgt    schedule 20.12.2012


Ответы (2)


Существует опция при использовании PyInstaller, --additional-hooks-dir=HOOKSDIR, которая добавит дополнительные каталоги к пути поиска pyinstaller.

person sid16rgt    schedule 20.12.2012
comment
В руководстве пользователя PyInstaller указано --additional-hooks-dir=HOOKSPATH Дополнительный путь для поиска хуков. Это расширит путь к крючкам, см. Анализ ниже. - person bootchk; 07.09.2013
comment
Поэтому я не думаю, что этот ответ правильный. Вам также нужно будет написать собственный модуль hooks. Не было бы так же просто изменить файл спецификации, чтобы он включал dll? - person bootchk; 07.09.2013

Вариант PyInstaller--add-data <SRC;DEST or SRC:DEST>

pyinstaller --add-data "\path\of\imageformats;imageformats" target.py
person gamesun    schedule 12.03.2020