Je "compile" un programme en utilisant PyInstaller en utilisant un fichier .spec. J'utilise le fichier .spec car je dois inclure un fichier supplémentaire dans le programme. Quand j'essaye de faire PyInstaller --onefile Prog.spec
, il crée toujours un dossier dans dist
avec tous les fichiers séparés au lieu de créer un seul fichier comme je m'y attendais. Si je fais PyInstaller --onefile Prog.py
alors il crée un seul fichier .exe dans dist
, ce que je veux. Y a-t-il quelque chose de spécial que je dois faire lors de l'utilisation d'un fichier .spec?
Vous pouvez ajouter le fichier supplémentaire sur la ligne de commande au lieu de modifier le fichier de spécifications:
pyinstaller --onefile --add-data <SRC;DEST or SRC:DEST> yourfile.py
Sinon, assurez-vous qu'il n'y a pas d'étape de collecte dans le fichier de spécifications:
"En mode un fichier, il n'y a aucun appel à COLLECT et l'instance EXE reçoit tous les scripts, modules et binaires."
https://pyinstaller.readthedocs.io/en/stable/usage.html pour plus d'informations sur les drapeaux de ligne de commande.
Cela peut également offrir un aperçu si les problèmes persistent: Regroupement de fichiers de données avec PyInstaller (--onefile)
Utilisation pyi-makespec --onefile yourprogram.py
pour générer un exemple de fichier de spécifications pour le mode un fichier.
https://pythonhosted.org/PyInstaller/man/pyi-makespec.html
Il n'y a pas d'appel COLLECT et l'appel EXE est différent. Exemple:
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='main',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )