j'utilise python2.4 et matplotlib 0.90
j'ai déjà réalisé avec succès des executables avec py2exe de programmes en python.
Le pb vient lorsque je veux faire un executable d'un programme faisant appel à la bibliothèque 'matplotlib'.
soit par exemple le programme 'camembert1' suivant qui trace deux "camemberts" pour des statistiques:
-------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #programme camembert1 from pylab import * figure(1, figsize=(10,10)) #taille de la figure 1 qui contient le camembert: 10 * 10 cm ax = axes([0, 0, 0.5, 0.5])# on place les axes en bas à gauche (0,0) figtext(0.8,0.8,'titre general',color='r',size='16',rotation=45)#coordonnées relatives en % labels = 'Figures reussies', 'Figures mal maitrisees', 'Figuresnonreussies','possible' part1=60; part2=60; part3=120; part4=20 fracs = [part1,part2,part3,part4] title('titre1', fontsize=20) figure(1) pie(fracs, labels=labels) figure(1, figsize=(10,10)) ax = axes([0.6, 0, 0.2, 0.2]) # on va placer l'axe à 60 % de la largeur de page title('titre2', fontsize=20) explode=(0.08, 0.05, 0.05, 0.05) #on présente le camembert explosé avec espace pie(fracs, explode=explode, labels=labels,autopct='%1.2f%%', shadow=True) savefig('pie_demo') #on sauvegarde au format bmp l'image du camembert show()
je veux faire un camembert1.exe qui fonctionne
1) essai avec setup.py contenant :
py2exe génère bien un fichier exe dans le répertoire dist mais il y a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #setup.py from distutils.core import setup import py2exe setup(windows=["camembert1.py"])
une erreur lorsque je lance l'exe. le fichier log créé mentionne:
Traceback (most recent call last):
File "camembert1.py", line 3, in ?
File "pylab.pyc", line 1, in ?
File "matplotlib\__init__.pyc", line 729, in ?
File "matplotlib\__init__.pyc", line 273, in wrapper
File "matplotlib\__init__.pyc", line 360, in _get_data_path
RuntimeError: Could not find the matplotlib data files
Il n'arrive donc pas à trouver les data files.
j'ai rechargé 'matplotlib' ainsi que 'numpy' pour vérifier si ce n'était pas un pb d'installation.
Mêmes messages d'erreur en lançant le nouvel executable
Je précise que j'ai procédé à l'instatallation standard sous :
C : Python24 des différents packages.
et je suis sous windows Xp.
j'ai cherché sur le net et le site :
http///www.py2exe.org/index.cgi/MatPlotLib
Ce site mentionne bien le pb d'une incompatibilité entre Py2exe et Matplotlib.
J'ai essayé les solutions proposées:
1) modification de mon setup.py en:
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 from distutils.core import setup import py2exe import matplotlib setup( console=['camembert1.py'], options={ 'py2exe': { 'packages' : ['matplotlib', 'pytz'], } }, data_files=[matplotlib.get_py2exe_datafiles()] )
impossible de générer d'executable
Détail: en mode dos (invite de commande) je tape:
C:\Python24>python setup.py py2exe <-ce que je tape
ce que j'obtiens en mode 'invite de commande' comme réponse:
si j'essaye de mettre dans le setup.py:Traceback<most recent call last>:
File setup.py", line 12, in ?
data_files=[matplotlib.get_py2exe_datafiles<>]
Files "C:\Python24\Lib\site-packages\matplotlib\__init__.py", line 369, in get__
py2exe_datafiles
mplfiles.remove(os.sep.join([get_data_path(),'Matplotlib.nib']))
ValueError: list.remove(x): x not in list
le résultat est presque parfait, mais à la fin du traitement j'obtiens un message d'erreur dans ma fenêtre dos:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 from distutils.core import setup import py2exe from distutils.filelist import findall import os import matplotlib matplotlibdatadir = matplotlib.get_data_path() matplotlibdata = findall(matplotlibdatadir) matplotlibdata_files = [] for f in matplotlibdata: dirname = os.path.join('matplotlibdata', f[len(matplotlibdatadir)+1:]) matplotlibdata_files.append((os.path.split(dirname)[0], [f])) setup( console=['camembert1.py'], options={ 'py2exe': { 'packages' : ['matplotlib', 'pytz'], } }, data_files=matplotlibdata_files )
faut il que je me procure ce fichier dll? et ou faut il le placer précisemment?*** finding dlls needed ***
error: libgdk-win32-2.0-0.dll: No such file or directory
si vous avez des idées, car moi je me casse les dents sur ce pb d'executable impossible avec py2exe pour un programme python utilisant matplotlib.
Merci d'avance pour vos conseils éclairés
je précise que je suis un débutant en python, n'hésitez pas à me parler petit "nègre"
Partager