Last active
December 25, 2024 12:24
-
-
Save maxfil333/98a0ec7ea40599264a0c80f80ac026e1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1. Получить .spec файл командой | |
pyinstaller --onefile src/main.py | |
2. Добавить в datas .spec файла пути | |
datas=[ | |
('C:\\Program Files\\poppler-22.01.0\\Library\\bin', 'poppler'), | |
('src', 'src'), | |
('config', 'config'), | |
('C:\\Program Files\\Tesseract-OCR', 'Tesseract-OCR'), | |
('C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI', 'magick') | |
], | |
3. Удалить dist, build | |
4. Собрать проект через pyinstaller main.spec | |
5. Варианты расположения и наличия директорий в сборке (на примере ImageMagick). | |
datas=[('C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI', 'magick')], | |
5.1 getattr(sys, 'frozen') + --onefile + --add-data/путь добавлен в .spec datas | |
os.path.join(sys._MEIPASS, 'magick', 'magick.exe') | |
5.2 getattr(sys, 'frozen') + --onefile - путь НЕ добавлен в .spec | |
Положить рядом с main.exe директорию с исполняемым файлом magick/magick.exe | |
os.path.join(os.path.dirname(sys.executable), 'magick', 'magick.exe') | |
5.3 getattr(sys, 'frozen') - --onefile - путь НЕ добавлен в .spec | |
Положить рядом с main.exe директорию с исполняемым файлом magick/magick.exe | |
os.path.join(os.path.dirname(sys.executable), 'magick', 'magick.exe') | |
5.4 getattr(sys, 'frozen') - --onefile + путь добавлен в .spec | |
os.path.join(sys._MEIPASS, 'magick', 'magick.exe') | |
5.5 Запуск из исходного кода | |
magick или C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe | |
Возможные ошибки и решения: | |
1) FileNotFound: No such file or directory | |
Решение 1: копировать недостающие библиотеки из .venv в _internal | |
Решение 2: | |
from PyInstaller.utils.hooks import collect_all | |
datas = [ | |
('C:\\Program Files\\poppler-24.07.0\\Library\\bin', 'poppler'), | |
('src', 'src'), | |
('config', 'config'), | |
('C:\\Program Files\\Tesseract-OCR', 'Tesseract-OCR'), | |
('C:\\Program Files\\ImageMagick-7.1.1-Q16-HDRI', 'magick') | |
] | |
binaries = [] | |
hiddenimports = ['tiktoken_ext.openai_public', 'tiktoken_ext'] | |
# Список библиотек для автоматического сбора данных | |
libraries = ['chromadb', 'geotext', 'natasha'] | |
# Автоматический сбор данных, бинарников и скрытых импортов для указанных библиотек | |
for lib in libraries: | |
tmp_ret = collect_all(lib) | |
datas += tmp_ret[0] | |
binaries += tmp_ret[1] | |
hiddenimports += tmp_ret[2] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment