Kivy Garden в PyInstaller - застрял при попытке отследить импорт

У меня есть проект Python на основе Kivy, который я пытаюсь построить. Он использует компонент NavigationDrawer из Kivy Garden через импорт:

из kivy.garden.navigationdrawer импортировать NavigationDrawer

У меня есть файл спецификации PyInstaller, который создает распространяемую версию. Эта версия хорошо работает на моей машине, но, к сожалению, не на других машинах. Запустив интерпретатор в версии «dist» с ключом -v, кажется, что когда я запускаю дистрибутив на своем компьютере, компонент navigationdrawer на самом деле не поступает из моей папки сборки. Все остальные импорты показывают что-то вроде:

import kivy.graphics.gl_instructions # динамически загружается из C:\Users\me\myapp\dist\RACECA~1\kivy.graphics.gl_instructions.pyd

Но импорт navigationdrawer говорит:

импортировать kivy.garden.navigationdrawer

"""каталог C:\Users\me\.kivy\garden\garden.navigationdrawer C:\Users\me\.kivy\garden\garden.navigationdrawer\__init__.pyc соответствует C:\Users\me\.kivy\garden \garden.navigationdrawer\__init__.py import kivy.garden.navigationdrawer # предварительно скомпилировано из C:\Users\me\.kivy\garden\garden.navigationdrawer\__init__.pyc"""

Но нет! Я не хочу, чтобы вы импортировали их из c:\users. Я хочу, чтобы они были красиво скопированы в мою папку dist, как и все остальные импорты. Я без особого удовольствия пытался добавить c:\users\me в pathex PyInstaller, системный PATH и PYTHONPATH. У кого-нибудь есть идеи?


person Chris Rae    schedule 04.06.2014    source источник
comment
Комедийный шрифт не должен был появляться здесь ... Я просто не мог заставить форматировщик блок-кавычек SO прекратить это делать. :)   -  person Chris Rae    schedule 05.06.2014
comment
Я настроил спецификационный файл, мой файл kivy py отлично работает, но при создании исполняемого файла он не требует дополнительного пакета или даже файла .kv.   -  person Tejas Tank    schedule 20.06.2017
comment
Отвечает ли это на ваш вопрос? Получение Pyinstaller для распознавания пути к Kivy Garden Matplotlib модули   -  person badams    schedule 09.07.2020


Ответы (4)


Вы можете просто скопировать код navigationdrawer из C:\Users\me\.kivy\garden\garden.navigationdrawer в каталог вашего приложения, вызвать папку «navigationdrawer» и заменить импорт на from navigationdrawer import NavigationDrawer.

Это не совсем «правильный» способ сделать это (возможно, есть способ заставить pyinstaller скопировать его), но он должен работать нормально.

person inclement    schedule 04.06.2014

Попробуйте установить пакеты для сада в свое приложение. то есть

garden install --app navigationdrawer

Это создаст папку libs/garden внутри текущего каталога и поместит туда пакеты сада, что должно упростить включение.

person kitti    schedule 04.06.2014
comment
На самом деле это не работает - кажется, все еще загружается не с того места. Я предполагаю, что PyInstaller не воспринял это как зависимость и не скопировал библиотеку. Я думаю, что ключом к этому является какая-то директива PyInstaller, я просто не знаю, что это может быть. - person Chris Rae; 05.06.2014
comment
После установки приложения попробуйте добавить навигационный ящик как скрытый import в спецификации pyinstaller. - person brousch; 05.06.2014

У меня была аналогичная проблема с садовыми модулями. Когда я устанавливаю следующее:

start cmd/C "garden install --kivy roulettescroll" start cmd/C "garden install --kivy roulette" start cmd/C "garden install --kivy tickline" start cmd/C "garden install --kivy datetimepicker"

Я добавляю PyInstaller... --hidden-import=kivy.garden.tickline --hidden-import=kivy.garden.roulette --hidden-import=kivy.garden.roulettescroll --hidden-import=kivy.garden.datetimepicker ...

Я могу установить и у меня нет проблем с Python, собирающим модули. К сожалению, средство выбора даты и времени отображается в виде белых прямоугольников. Я понятия не имею, что мне может не хватать... Но, по крайней мере, я решил проблему с импортом.

person Daniel Cohen    schedule 14.09.2016

Перейдите к пакетам вашего сайта Python, там есть папка с именем garden, посмотрите в __init__.py. Есть объяснение, как установить navigationdrawer.

person Eduardo Campo    schedule 06.02.2016
comment
Пожалуйста, поделитесь более подробной информацией здесь. Нужны подробные шаги по вашему саамскому техническому руководству с полными документами - person Tejas Tank; 19.06.2017