Bonjour tous,

je fais suite à une précédente discussion où je ne savais pas trop comment distribuer des données python:
http://www.developpez.net/forums/d14...py-matplotlib/

Maintenant, grâce à votre aide je me suis mis une bonne fois pour toute à "cxfreeze" et j'arrive à faire déjà pas mal de chose à l'aide de ce fichier setup très inspiré de cette page: http://python.jpvweb.com/mesrecettes...p?id=cx_freeze

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#!/usr/bin/python
# -*- coding: utf-8 -*-
#Icone sous Windows: il faut:
#=> un xxx.ico pour integration dans le exe, avec "icon=xxx.ico"
#=> un xxx.png pour integration avec PyQt4 + demander la recopie avec includefiles.
import sys, os
from cx_Freeze import setup, Executable
#############################################################################
# preparation des options
# chemins de recherche des modules
# ajouter d'autres chemins (absolus) si necessaire: sys.path + ["chemin1", "chemin2"]
path = sys.path
# options d'inclusion/exclusion des modules
includes = []  # nommer les modules non trouves par cx_freeze
excludes = []
packages = ["numpy","scipy","matplotlib"]  # nommer les packages utilises
# copier les fichiers non-Python et/ou repertoires et leur contenu:
includefiles = []
if sys.platform == "win32":
    pass
    # includefiles += [...] : ajouter les recopies specifiques à Windows
elif sys.platform == "linux2":
    pass
    # includefiles += [...] : ajouter les recopies specifiques à Linux
else:
    pass
    # includefiles += [...] : cas du Mac OSX non traite ici
# pour que les bibliotheques binaires de /usr/lib soient recopiees aussi sous Linux
binpathincludes = []
if sys.platform == "linux2":
    binpathincludes += ["/usr/lib"]
# niveau d'optimisation pour la compilation en bytecodes
optimize = 0
# si True, n'affiche que les warning et les erreurs pendant le traitement cx_freeze
silent = True
# construction du dictionnaire des options
options = {"path": path,
           "includes": includes,
           "excludes": excludes,
           "packages": packages,
           "include_files": includefiles,
           "bin_path_includes": binpathincludes,
           "create_shared_zip": False,  # <= ne pas generer de fichier zip
           "include_in_shared_zip": False,  # <= ne pas generer de fichier zip
           "compressed": False,  # <= ne pas generer de fichier zip
           "optimize": optimize,
           "silent": silent
           }
# pour inclure sous Windows les dll system de Windows necessaires
if sys.platform == "win32":
    options["include_msvcr"] = True
#############################################################################
# preparation des cibles
base = None
if sys.platform == "win32":
    #base = "Win32GUI"  # pour application graphique sous Windows
    base = "Console" # pour application en console sous Windows
icone = None
if sys.platform == "win32":
    icone = "icone.ico"
cible_1 = Executable(
    script="hello.py",
    base=base,
    compress=False,  # <= ne pas generer de fichier zip
    copyDependentFiles=True,
    appendScriptToExe=True,
    appendScriptToLibrary=False,  # <= ne pas generer de fichier zip
    #icon=icone
    )
#############################################################################
# creation du setup
setup(
    name="monprogramme",
    version="1.00",
    description="monprogramme",
    author="auteurduprogramme",
    options={"build_exe": options},
	executables=[cible_1]
    )
par contre pour certains bout de code, par exemple celui ci:
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
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
import FileDialog
x=np.linspace(0,50,100)
y_true=5*np.exp(-0.1*x)
y_meas=y_true+np.random.rand(len(x))
p0=[];p0.append(1);p0.append(1)
p=plt.figure(1)
p=plt.plot(x,y_meas,'bo')
def residuals1(p, y, x):
        err = y-p[0]*np.exp(-p[1]*x)
        return err
x=np.linspace(0,50,100)
y_true=5*np.exp(-0.1*x)
y_meas=y_true+np.random.rand(len(x))
plsq = leastsq(residuals1, p0, args=(y_meas, x),maxfev=5000)
p=plt.figure(1)
p=plt.plot(x,plsq[0][0]*np.exp(-plsq[0][1]*x),'r.',label="lsq")
plt.legend()
plt.show()
cxfreeze n'arrivent pas à me trouver tout les dll et librairies nécessaires (ici des problèmes avec scipy.optimize) :
Pièce jointe 164722

Je me doute que je dois ajouter des chemins dans les listes "includefiles", "includes", "excludes" mais je n'ai pas vraiment compris comment le faire et quoi rajouter dans ces listes ??? des fichiers .py ? des .pyc ?

pourriez vous m'expliquer qu'es ce que l'on attend dans ce type de listes "includefiles", "includes", "excludes" et comment le faire sur cet exemple "simple" ?


j'ai trouvé des choses intéressantes sur le net :
https://bitbucket.org/anthony_tuinin...cx_freeze-with
mais j'ai deux difficultés : je ne suis pas un craque en anglais et en plus la syntaxe python utilisées est un peu difficile pour moi car je suis débutant (écriture trop condensée)

pourriez vous me montrer avec une manière simple comment résoudre mon problème s'il vous plait ?

merci beaucoup pour votre aide et bonne fin d'année