Hallo!
Ich hab jetzt echt lang gesucht, aber nix gefunden.
Wie kann ich mehrere Scripte so kompilieren, dass ich die PythonLib nur einmal brauche?
Ich habs mit cxfreeze probiert, auch mit der Anleitung von Gerold, aber es kam ein Fehler:
[quote=""cx_Freeze: Python error in main script"-Fehlermeldung "]Traceback(most...
...import _tkinter
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.[/quote]
Mit Py2exe weiß ich nicht, wie ich die Scriptnamen trennen soll.
Ich hoffe, ihr könnt mir helfen.
Gruß, jj
Mehrere Scripte kompilieren
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo jj!schlangenbeschwörer hat geschrieben:Traceback(most...
...import _tkinter
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.
Lass es dir bitte nicht aus der Nase ziehen. Vollständiger Traceback und was importierst du in deinen Programmen wie? Dann kann ich auch probieren, aber ohne diese Informationen...
Edit:
Ups!
Jetzt habe ich soeben zum ersten Mal versucht, ein Tkinter-Programm mit cx_freeze zusammenzustellen. Fehlanzeige. Ich kriege es nicht hin. Also werde ich dir kaum helfen können -- auch wenn du mir oben genannte Fragen beantwortest.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Hi Gerold!
Hier die Module, die ich in den 4 Programmen und den benötigten eigenen Modulen ganz oder in Teilen importiere:
sys
os
pickle
win32api
time
getopt
math
random
Tkinter
Tix
tkColorChooser
tkMessageBox
tkFileDialog
wenn möglich:
winsound
threading
Da hatte ich auch schon mal Probleme mit Tkinter und noch mehr mit Tix...
Gruß, jj
Hier die Module, die ich in den 4 Programmen und den benötigten eigenen Modulen ganz oder in Teilen importiere:
sys
os
pickle
win32api
time
getopt
math
random
Tkinter
Tix
tkColorChooser
tkMessageBox
tkFileDialog
wenn möglich:
winsound
threading
1.Fehlermeldung hat geschrieben:Die Anwendung konnte nicht gestartet werden, weil tk84.dll nicht gefunden wurde. Neuinstallation [kann helfen]
Das einzige was ich komisch finde, ist "\initscripts\console.py", aber sagt mir nix. Weiß vlt. einer, wenns mit cx nicht geht, wies mit py2exe geht?2.Fehlermeldung (s.o.) hat geschrieben: Traceback (most recent call last):
File "C:\Python24\cx_Freeze\initscripts\console.py", line 27, in ?
exec code in m.__dict__
File "[meinProgramm].py", line 2, in ?
File "C:\Python24\lib\lib-tk\Tkinter.py", line 37, in ?
import FixTk # Attempt to configure Tcl/Tk without requiring PATH
File "C:\Python24\lib\lib-tk\FixTk.py",line 24, in ?
import _tkinter
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden
Da hatte ich auch schon mal Probleme mit Tkinter und noch mehr mit Tix...
Gruß, jj
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Hallo!
So, ich hab es jetzt mit py2exe versucht. Trotz include-liste mit allen benötigten Modulen ging es erst immer noch nicht, da die Module ja weitere benötigen, die nicht automatisch mitkopiert werden.
Jetzt hab ich manuell nach den error-logs alle pyc.-Dateien in den zip-Ordner kopiert, und das erste Programm läuft auch schon.
Problem: Die Tix-Programme.
Außer der Tix.pyc gibt es doch keine Datei, oder?
Vlt. ein Paket machen? Also nen Ordner Tix wo die Tix.pyc und ne leere __init__-Datei drin sind?
Ist das kompliziert...
Gruß, jj
Ne, aber es reicht nicht...Leonidas hat geschrieben:Die Datei ``tk84.dll`` manuell in den Ordner mit den EXE-Dateien zu kopieren scheidet aus?
So, ich hab es jetzt mit py2exe versucht. Trotz include-liste mit allen benötigten Modulen ging es erst immer noch nicht, da die Module ja weitere benötigen, die nicht automatisch mitkopiert werden.
Jetzt hab ich manuell nach den error-logs alle pyc.-Dateien in den zip-Ordner kopiert, und das erste Programm läuft auch schon.
Problem: Die Tix-Programme.
Die Tix.pyc ist im zip-Ordner, aber er sucht ja ein Paket. Was tun?Log-Datei hat geschrieben:Traceback (most recent call last):
File "sudoku1.2.py", line 474, in ?
File "sudoku1.2.py", line 300, in __init__
File "Tix.pyc", line 210, in __init__
_tkinter.TclError: can't find package Tix
Außer der Tix.pyc gibt es doch keine Datei, oder?
Vlt. ein Paket machen? Also nen Ordner Tix wo die Tix.pyc und ne leere __init__-Datei drin sind?
Ist das kompliziert...
Gruß, jj
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
Es geht!
Diese Seite hilft: http://www.py2exe.org/index.cgi/TixSetup
Man muss echt den ganzen Ordner kopieren...
Ich hab jetzt ein setup.py in dieser Art:
(etwas suboptimal, aber immerhin, es funzt!)
Dabei werden die exe-Dateien in jedem Durchlauf für ein anderes Programm erzeugt und der Lib-Ordner und die anderen Dateien, die immer erzeugt werden, werden überschrieben. Deshalb muss man beim letzten Mal alle benötigten Module includen.
Gruß, jj
Diese Seite hilft: http://www.py2exe.org/index.cgi/TixSetup
Man muss echt den ganzen Ordner kopieren...
Ich hab jetzt ein setup.py in dieser Art:
(etwas suboptimal, aber immerhin, es funzt!)
Code: Alles auswählen
# -*- coding: cp1252 -*-
# setup.py
import glob
import os
import sys
from distutils.core import setup
import py2exe
scripts = ("Programm1.py", "Programm2.py","Programm3.py" ,"Programm4.py")
icons = (1, "pfad/zum/icon/für/programm1"),(2,"..."),(3, "...")
def files(folder):
for path in glob.glob(folder+'/*'):
if os.path.isfile(path):
yield path
data_files=[
('.', glob.glob(sys.prefix+'/DLLs/tix81*.dll')),
('tcl/tix8.1', files(sys.prefix+'/tcl/tix8.1')),
('tcl/tix8.1/bitmaps', files(sys.prefix+'/tcl/tix8.1/bitmaps')),
('tcl/tix8.1/pref', files(sys.prefix+'/tcl/tix8.1/pref')),
]
for x in range(3):
setup(
windows = [
{ "script": scripts[x],
"icon_resources": [icons[x]]
}
],
)
setup(
windows = [ {"script": scripts[3] }],
options = {"py2exe":{"includes":['benötigtesModul1','bM2','...','eigenesModul1', '...']}},
data_files=data_files,
)
Gruß, jj