pyinstaller не может найти добавленные файлы - Ma c OS - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь создать приложение на основе python 3.7.7 на Ma c ОС Catalina 10.15, используя pyinstaller 3.6. Я установил python, используя Homebrew и pyinstaller с pip.

Этот python код с именем GUI .py нуждается в пяти изображениях, которые хранятся в папке с именем "resources", и все находится внутри " Проект ». Таким образом, структура проекта выглядит следующим образом:

Проект:

  • GUI .py
  • ресурсы:
    • image1.png
    • image2.png
    • image3.png
    • image4.png
    • image5.png

Путь, который GUI .py использует для поиска изображений, подобен «resources / image1.png», «resources / image2.png» и т. Д. Для остальных изображений.

Я открываю терминал и введите следующее:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:resources /Users/user/Desktop/Project/GUI.py

Затем создаются папки dist и build, а также файл GUI .spe c.

Проблема появляется, когда я go в папку dist / GUI и я нахожу исполняемый файл. Я дважды щелкаю по нему, чтобы открыть приложение, но появляется следующая ошибка:

FileNotFoundError: [Errno2] No such file or directory: 'resources/image1.png'

Однако, если я открою терминал и go в каталог dist / GUI, где находится GUI исполняемый файл расположен и выполняется вручную:

./GUI

он отлично работает и приложение открывается.

Это происходит так же, когда я добавляю опцию --nocnosole к инструкции pyinstaller:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:resources --noconsole /Users/user/Desktop/Project/GUI.py

Это создает приложение ОС Ma c с именем GUI, которое не открывается, когда я нажимаю на него. Но, как и раньше, если я открываю терминал и go для GUI / Contents / MacOS /, я нахожу GUI возможным и запускаю его вручную:

./GUI

затем он работает нормально.

Я не знаю, правильно ли я добавляю папку ресурсов, содержащую изображения, или это проблема ОС Ma c с pyinstaller.

Я добавляю некоторые заметки с дополнительной информацией:

  • Я проделал тот же процесс в Windows 10 и Ubuntu 18.04.1, и он работает отлично. Я могу создать исполняемый файл, содержащийся в папке dist, и экспортировать его на другие компьютеры, и он просто работает.
  • Я использовал другой способ добавления данных в команду pyinstaller, но он не работает: pyinstaller --add-data /Users/user/Desktop/Project/:. /Users/user/Desktop/Project/GUI.py
  • Я следовал решениям, предоставленным в Pyinstaller, добавляя файлы данных , но ничего не работает
  • Приложение python представляет собой графический интерфейс пользователя c, использующий tkinter, pyserial и PIL , Кроме того, я использовал пользовательские пакеты, которые я добавил с параметром -p в команде pyinstaller, но здесь он опущен, так как он не является источником ошибок.

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

1 Ответ

0 голосов
/ 17 апреля 2020

Это меньше, чем python проблема, а больше, чем Ма c. Когда вы запускаете приложение на компьютере ma c, каталог, в котором оно запущено, на самом деле является "/.app/Contents/MacOS/". Я предполагаю, что либо вам нужно разместить каталог ресурсов в этом месте, чтобы приложение могло найти его при запуске, либо вам нужно найти способ использовать прямой путь, а не относительный путь, который кажется вам " повторное использование. Я не очень хорошо знаком с pyinstaller, но я думаю, что-то вроде этого, учитывая синтаксис, который вы использовали выше:

pyinstaller --add-data /Users/user/Desktop/Project/resources/*:/LibraryDir/PythonStuff/resources /Users/user/Desktop/Project/GUI.py
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...