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:
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 :
1 2 3 4
| #setup.py
from distutils.core import setup
import py2exe
setup(windows=["camembert1.py"]) |
py2exe génère bien un fichier exe dans le répertoire dist mais il y a
une erreur lorsque je lance l'exe. le fichier log créé mentionne:
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:
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()]
) |
Résultat:
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:
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
) |
le résultat est presque parfait, mais à la fin du traitement j'obtiens un message d'erreur dans ma fenêtre dos:
faut il que je me procure ce fichier dll? et ou faut il le placer précisemment?
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