Ось розв'язання проблеми. У мене середовище: 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

Немає коментарів:
Дописати коментар