Ich entwickle ein kleines Tool auf Python, das im Grunde eine Reihe von Skripten auf einem Ordner startet. Ich muss dies auf eine eigenständige Binärdatei packen und ich verwende py2exe dafür.Wie bündle ich .py-Dateien mit execfile() auf py2exe?
Mein aktueller Code verwenden Sie os.path.listdir()
, um alle .py-Dateien in einem Ordner abzurufen, und starten Sie dann einige davon mit der Funktion execfile()
basierend auf Benutzereingaben auf einer PyQT-Schnittstelle.
Mein Code funktioniert wie erwartet, wenn er über die Python-Hauptdatei ausgeführt wird, schlägt jedoch fehl, wenn er mit py2exe kompiliert wird. Die Ausnahme ist:
IOError: [Errno 2] No such file or directory
für die Python-Dateien mit execfile()
ins Leben gerufen.
Ich bin derzeit mit "bundle_files": 1
und zipfile = None
bündeln. Ich habe versucht, diese Dateien mit Includes und Paketen zu mischen, aber ohne Glück. Kannst du mir helfen, py2exe richtig zu konfigurieren?
Dies ist mein aktuelles setup.py
:
from distutils.core import setup
import py2exe
import os
#Python modules excluded from binary file
mod_excludes = [
"Tkinter",
"doctest",
"unittest",
"pydoc",
"pygments",
"pdb",
"email",
"_ssl",
"difflib",
"inspect"
]
#Avoid adding this dependencies
dll_excludes = [
"MSVCP90.dll",
"w9xpopen.exe"
]
#Force to exe
mod_includes = [
"sip"
]
package_includes = [
"app.payloads"
]
py2exe_options = {
"optimize": 2, # 0 (None), 1 (-O), 2 (-OO)
"includes": mod_includes,
"excludes": mod_excludes,
"dll_excludes": dll_excludes,
"packages": package_includes,
#"xref": False,
"bundle_files": 1,
"compressed": True
#"dist_dir": dist_dir
}
#TODO generar automaticamente la interfaz
setup(
windows=[{"script": "app.py",
"icon_resources": [(1, "app/gui/Res/app.ico")],
"uac_info": "requireAdministrator"}],
data_files=exe_files,
options={"py2exe": py2exe_options},
zipfile=None
)
Und ich erhalte die folgenden Zurückverfolgungs:
Traceback (most recent call last):
File "app\gui\ui.pyo", line 22, in call_report
File "app\core\core.pyo", line 32, in generate_report
File "app\core\core.pyo", line 18, in launch_payload
IOError: [Errno 2] No such file or directory: 'C:\\Users\\my_user\\path\\to\\app\\dist\\app.exe\\app\\payloads\\autoruns.py'
Können Sie Ihren 'setup.py' Code und die Ausgabe von, wenn Sie versuchen, dies über Python/py2exe auf die Frage ausführen? –
Danke Bas! Ich habe die setup.py und das Traceback hinzugefügt. – lithiium