MYCSS

8 вересня 2023 р.

Нотатка: pyzbar, pyinstaller, poetry, python - missing lib

При використанні бібліотеки pyzbar, її компоненти не додаються до exe файлу створеного за допомогою pyinstaller.
Ось розв'язання проблеми. У мене середовище: Python 3.11.5 та poetry.
pyinstaller "../some_app/main.py" --clean --name some_app --onefile --version-file "../versionfile.txt" --add-binary "%VIRTUAL_ENV%\Lib\site-packages\pyzbar\*.dll;pyzbar"

EXE файл після цього самодостатнім є, додаткових dll додавати не треба.

Перевірено у Windows Sandbox.

За матеріалами.
P.S. Build version.txt - build-version.py
import pyinstaller_versionfile
from configparser import ConfigParser
import sys
from pathlib import Path


parser = ConfigParser()
# read config file
config_setup=Path("..\setup.cfg")
if config_setup.is_file():
    parser.read(config_setup)
    ver = parser["metadata"].get("version", "0.0.1")
else:
    config_setup=Path("..\pyproject.toml")
    if config_setup.is_file():
        parser.read(config_setup)
        ver = parser["tool.poetry"].get("version", "0.0.1")
        ver = ver.strip('"')

if len(sys.argv) > 1:
    filename = Path(sys.argv[1])
    if filename.is_file():
        new_fn = filename.with_stem(f"{filename.stem}_{ver}")
        filename.rename(new_fn)
else:
    pyinstaller_versionfile.create_versionfile(
        output_file="..\\versionfile.txt",
        version=f"{ver}.0",
        company_name="lexxai",
        file_description="Some Python App of lexxai",
        internal_name="some_app",
        legal_copyright="https://github.com/lexxai",
        original_filename="some_app.exe",
        product_name="some_app",
    )
    print(f"Done: versionfile.txt in parent folder. version='{ver}.0'")
Build script: script/build.cmd
python build-version.py

mkdir "../pyinstall"
ERASE "../pyinstall" /S/Q
PUSHD "../pyinstall"

pyinstaller "../some_app/main.py" --clean --name some_app --onefile --version-file "../versionfile.txt" --add-binary "%VIRTUAL_ENV%\Lib\site-packages\pyzbar\*.dll;pyzbar"
POPD
python build-version.py ../pyinstall/dist/some_app.exe

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready