Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
окрестности
- windows 10 64bit
- auto-py-to-exe 2.10.1
предисловие
Python
Упаковка проекта — вопрос, который часто задают многие новички, есть также статьи о том, как его использовать раньше.pyinstaller
для упаковки и создания исполняемых файлов, но процесс упаковки основан на командной строке. Инструмент, описанный в этой статье,auto-py-to-exe
,этоpyinstaller
изGUI
Версию, более удобную для новичков, можно легко выполнить одним щелчком мыши, так что давайте начнем.
Установить
использоватьpip
прямая установка
pip install auto-py-to-exe
Или извлеките исходный код, распакуйте его, войдите в корневой каталог и выполните
python setup.py install
Пример упаковки
В этой статье используется предыдущийyolov5-pyqt5Проект запакован, на это нужно обратить внимание, если вы используетеpython
Виртуальная среда, которая должна быть установлена в этой виртуальной средеauto-py-to-exe
После того, как код проекта будет извлечен, изменитеmain.py
,будет
self.device = select_device(self.opt.device)
изменить на
# gpu
self.device = torch.device('cuda:0')
# 如果只有cpu的话,就改成
# self.device = torch.device('cpu')
Зачем так менять? В основном здесьselect_device
используется в методеsubprocess
,иpyinstaller
в упаковкеsubprocess
Метод сообщит об ошибке, если вы его изменитеsubprocess
Часть кода немного хлопотная, для простоты я не буду вызывать этот метод, подробнее см.Imagination.com/2019/12/04/…
Затем откройтеauto-py-to-exe
, выбор файла сценарияyolov5-pyqt5
в папкеmain.py
, выбрать один файл, то есть в итоге генерируется только один исполняемый файл
На вкладке «Дополнительно» нажмите--hidden-import
плюсик справа, затем заполнитеmodles.yolo
, иначе сгенерированныйexe
При запуске будет сообщено о следующей ошибке
Traceback (most recent call last):
File "detect_image.py", line 405, in <module>
File "detect_image.py", line 365, in main
File "detect_image.py", line 293, in detection_alertarea
File "detect_image.py", line 79, in __init__
File "models\experimental.py", line 137, in attempt_load
File "torch\serialization.py", line 594, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "torch\serialization.py", line 853, in _load
result = unpickler.load()
ModuleNotFoundError: No module named 'models.yolo'
[12976] Failed to execute script detect_image
другие подобныеNo module named xxx
ошибка, и то же решение
В процессе проверки конфигурации текущая команда будет отображать соответствующийpyinstaller
инструкции, если он у вас не установленauto-py-to-exe
, только установилpyinstaller
, затем скопируйте эту строку команды, она также может быть успешно упакована
Если ошибки нет, проект генерируетсяexe
Файл будет помещен в папку по умолчаниюC:\Users\用户名\output
Вниз
Подготовьте официальные файлы моделейyolov5s.pt
, вставитьweights
папку, затем дважды щелкнитеexe
документ
Наконец, выберите тестовое изображение для проверки, функция работает нормально.