@tumkaspvp
Python, C++

Как сделать так, чтобы pyinstaller взял с собой все нужные файлы?

Я хочу сделать exe файл из одного запускающего pine.py, нескольких python файлов и файлов с другим расширением, несколько раз пытался - не получается
Структура:
__pycache__ - > pine.cpython-37.pyc
lib - > grab.py, pine.py, pinejoy.py,  __pycache__- > grab.cpython-37.pyc, pine.cpython-37.pyc
models - > coco-dataset.labels, yolov3-tiny.cfg, yolov3-tiny.weights
pine.py
  • Вопрос задан
  • 7991 просмотр
Пригласить эксперта
Ответы на вопрос 1
@DollaR84
Для запаковки всех файлов в один exe необходимо использовать флаг -F.
Все py файлы подхватываются pyinstaller из импортов, поэтому для их включения никаких дополнительных действий не нужно.
Для добавления сторонних файлов используются следующие параметры:
--add-data - для добавления текстовых файлов данных;
--add-binary - для добавления бинарных данных.
Правило добавления: имя-файла;имя_папки
Например, если все дополнительные файлы лежат в папке models:
pyinstaller -F --add-data coco-dataset.labels;models --add-data yolov3-tiny.cfg;models --add-data yolov3-tiny.weights;models pine.py

А в в самом скрипте необходимо задать следующую функцию:
import os
import sys
def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    if getattr(sys, 'frozen', False):
        base_path = sys._MEIPASS
    else:
        base_path = os.getcwd()
    return os.path.join(base_path, relative_path)


Ну и конечно во всем коде, где происходит открытие данных файлов, надо задавать путь к ним через данную функцию.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы