s'il vous plaît lire tout ce post et aidez-moi. Je veux créer --onefile
exécutable avec pyinstaller.Bundle (Just --onefile)
j'ai ces derniers dans le développement côté:
- fenêtres 8.1 x64
- Qt 5.2.1
- Python 27
- PyQt5.2.1 (qui a construit avec Visual Studio 2012)
- visuelle Studio 2012
- PyInstaller 2.1
- pyWin32
et ceux-ci dans le côté de déploiement (VirtualBox) (comme une machine virtuelle propre):
- Windows 8 x64
- vcredist_x64 2012
ce qui est mon programme simple python que je veux pour construire:
#main.py
import sys
from PyQt5.QtWidgets import QApplication, QPushButton
app = QApplication(sys.argv)
win = QPushButton("Hello World!")
win.show()
sys.exit(app.exec_())
#------------------------------------------------
ok, quand je le construis comme --onedir
(pyinstaller main.py
) il fonctionne très bien du côté du développement et du déploiement.
lorsque je le construis comme --onefile
(pyinstaller -F main.py
) cela fonctionne très bien du côté du développement mais cela ne fonctionne pas du côté du déploiement.
et donner cette erreur:
This application failed to start because it could not find or load the Qt platform plugin "windows".
Available platform plugins are: minimal, offscreen, windows.
Reinstalling the application may fix this problem.
ce qui est de ma faute ou quel est le problème de ce bâtiment? En termes de cette erreur, il ne peut pas trouver le dossier qt5_plugins
qui se trouve dans le dossier _MEIxxxxx
dans le dossier temporaire.
Ou, pensez-vous que le problème vient du module sys
? Si oui, que dois-je faire?
merci pour la réponse à l'avance
Mise à jour:
je dois dire que j'ai ce warnnings et Erro en construction temps:
1024 WARNING: No such file C:\Python27\msvcp90.dll 1024 WARNING: Assembly incomplete 1026 ERROR: Assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_none not found
Update2:
j'ai ajouté msvcp90.dll
, msvcm90.dll
à c:\Python27
manuellement, et ces avertissements et erreurs sont résolus.
Mise à jour 3:
qt.conf:
[Paths]
Plugins = qt5_plugins
main.spec:
# -*- mode: python -*-
a = Analysis(['main.py'],
pathex=['D:\\hello2'],
hiddenimports=['sip', "PyQt5.QtCore", "PyQt5.QtGui", "PyQt5.QtWidgets"],
hookspath=None,
runtime_hooks=None)
pyz = PYZ(a.pure)
plugins = [("qt5_plugins/platforms/qwindows.dll",
"C:\\Qt\\Qt5.2.1\\5.2.1\\msvc2012_64\\plugins\\platforms\\qwindows.dll", "BINARY")]
data = [
("qt.conf", "qt.conf", "DATA")
]
exe = EXE(
pyz,
a.scripts,
a.binaries + plugins,
a.zipfiles,
a.datas + data,
name='main.exe',
debug=False,
strip=None,
upx=True,
console=True
)
qt5_plugins
qui a créé automatiquement avec pyinstaller
ont la plate-forme plugin.and je ne sais pas Je pense qu'il faut ajouter manuellement comme extralib.
Justin vous défini des données, mais pourquoi vous ne l'utilisez pas dans exe? – Madoodia
@Madoodia - faute de frappe. Je viens de le réparer. – jdi