Hoi,
weiß nicht recht, ob der Titel das Problem trifft, aber ...
Ich habe jedenfalls versucht eine Applikation von mir mit cx_Freeze zu packen und das ergab dies hier, wenn ich es wieder starte - auf dem selben Rechner wohlgemerkt:
Traceback (most recent call last):
File "/home/cm/bin/initscripts/Console.py", line 27, in ?
exec code in m.__dict__
File "SPlot.py", line 17, in ?
File "/usr/lib64/python2.4/site-packages/matplotlib/__init__.py", line 720, in ?
defaultParams = {
File "/usr/lib64/python2.4/site-packages/matplotlib/__init__.py", line 273, in wrapper
ret = func(*args, **kwargs)
File "/usr/lib64/python2.4/site-packages/matplotlib/__init__.py", line 360, in _get_data_path
raise RuntimeError('Could not find the matplotlib data files')
RuntimeError: Could not find the matplotlib data files
M.a.W. einige Dateien von matplotlib wurden nicht gelinkt. Ok. Jetzt habe ich beim matplotlib-Forum nachgefragt, ob jemand Rat weis und alles was ich bekam war ein Link zu py2exe - was mir leider überhaupt nicht weiterhilft. Aber da es hier relativ viele Leute gibt, die scheinbar cx_Freeze benutzen meine Frage: Was muß ich wo hineinschreiben, damit cx_Freeze alles in ein Paket schreibt?
Vielen Dank,
Christian
cx_Freeze und statische Dateien?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Christian!CM hat geschrieben: raise RuntimeError('Could not find the matplotlib data files')
RuntimeError: Could not find the matplotlib data files
Ich habe mir mal den Quellcode von ``C:\Python24\Lib\site-packages\matplotlib\__init__.py`` angesehen.
Code: Alles auswählen
# CODE ADDED TO SUPPORT PY2EXE - you will need to copy
# C:\Python23\share\matplotlib into your dist dir. See
# http://starship.python.net/crew/theller/moin.cgi/MatPlotLib
# for more info
if sys.platform=='win32' and sys.frozen:
path = os.path.join(os.path.split(sys.path[0])[0], 'matplotlibdata')
if os.path.isdir(path): return path
else:
# Try again assuming sys.path[0] is a dir not a exe
path = os.path.join(sys.path[0], 'matplotlibdata')
if os.path.isdir(path): return path
raise RuntimeError('Could not find the matplotlib data files')
``sys.frozen`` wird von cx_freeze ebenfalls ausgewertet, so dass dieser Code auch bei cx_freeze funktionieren sollte.
lg
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.
Danke gerold, aber ich kapiers immer noch nicht.
Ein einfaches cp -r /usr/lib64/python2.4/site-packages/matplotlib/* . in den Zielordner jedenfalls ist doch zu naiv gedacht.
Ich habe auch schon geschaut, ob ich irgendwo eine Parameterdatei verändern und so Freeze erzählen kann, wonach es zu schauen hat. Bin aber nicht fündig geworden. Wie sieht denn das Analogon zu setup.py von py2exe aus - falls es eines gibt?
Gruß,
Christian
Ein einfaches cp -r /usr/lib64/python2.4/site-packages/matplotlib/* . in den Zielordner jedenfalls ist doch zu naiv gedacht.
Ich habe auch schon geschaut, ob ich irgendwo eine Parameterdatei verändern und so Freeze erzählen kann, wonach es zu schauen hat. Bin aber nicht fündig geworden. Wie sieht denn das Analogon zu setup.py von py2exe aus - falls es eines gibt?
Gruß,
Christian
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Christian!CM hat geschrieben:Ein einfaches cp -r /usr/lib64/python2.4/site-packages/matplotlib/* . in den Zielordner jedenfalls ist doch zu naiv gedacht.
Ja, zu naiv. Erstens verwendest du den falschen Pfad und zweitens verwendest du Linux -- und das wird ja im vorher aufgezeigten Codeausschnitt komplett ausgeschlossen.
"share\matplotlib" ist der richtige Pfad.
Mehr kann ich jetzt nicht dazu beitragen, da ich mich jetzt mit ein paar Freunden in den Garten setze.
lg
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.