cxfreeze compilation sous Linux
Content de trouver dans la distribution standart de Linux le logiciel cx-freeze qui permet de compiler du code python en un executable sous Linux:
Je suis pris au dépourvue car celui-çi ne fonctionne pas pour le testscript que je lui ai fait compiler:
Il génère un exécutable qui ne marche pas et j'ai bien sur des messages d'erreurs comme ceux-çi:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Monnom@Monnom-destop:~$ cxfreeze test.py
copying /usr/lib/pymodules/python2.6/cx_Freeze/bases/Console -> /home/Monom/dist/test
copying /usr/lib/libpython2.6.so.1.0 -> /home/Monom/dist/libpython2.6.so.1.0
Traceback (most recent call last):
File "/usr/bin/cxfreeze", line 5, in <module>
main()
File "/usr/lib/pymodules/python2.6/cx_Freeze/main.py", line 170, in main
freezer.Freeze()
File "/usr/lib/pymodules/python2.6/cx_Freeze/freezer.py", line 405, in Freeze
self._FreezeExecutable(executable)
File "/usr/lib/pymodules/python2.6/cx_Freeze/freezer.py", line 173, in _FreezeExecutable
exe.copyDependentFiles, scriptModule)
File "/usr/lib/pymodules/python2.6/cx_Freeze/freezer.py", line 333, in _WriteModules
initModule = finder.IncludeFile(initScript, "cx_Freeze__init__")
File "/usr/lib/pymodules/python2.6/cx_Freeze/finder.py", line 386, in IncludeFile
deferredImports)
File "/usr/lib/pymodules/python2.6/cx_Freeze/finder.py", line 259, in _LoadModule
module.code = compile(fp.read() + "\n", path, "exec")
TypeError: compile() expected string without null bytes |
Il faut peut etre spécifier des options, ce que je n'ai pas fait ceçi étant optionels, afin que le logiciel fonctionne correctement.
Le testscript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from Tkinter import *
def test() :
global b
b.configure(text='It\'s compiled')
a=Tk()
b=Label(a, text='test', width=32)
c= Button(a, text='try', command=test)
d= Button(a, text='Off', command=a.destroy)
b.pack()
c.pack()
d.pack()
a.mainloop() |
Si quelqu'un peut m'aider sa serai sympa a faire marcher le programme correctement sa nous fera avancer.
PS:Mes excuses: j'ai déja publier cette question dans la mauvaise carégorie.
De cxfreeze vers pyinstaller
Merci, si j'ai bien compris il faut construire un script de compilation comme dans py2exe auquelle je suis trop habituer par sa simpliciter d'utilisation et la bonne documentation. Et je n'ai pas vraiment eu le temps de casser les dents sur cx-freeze et te remercie de la réponses:... j'essairai cette solution.:ccool:
Mais dans mon désespoir et ma défaite face a cx-freeze je me suis tourner vers pyinstaller et lue la doc...:calim2:
-Je suis arriver a l'installer.:ccool:
-J'ai réussi a générer un specfile(fichier de compilation) mais au moment de faire l'opération de construction:
Code:
1 2
|
Monnom@Monnom-desktop:~/pyinstaller-1.4$python Build.py compil_test.spec |
j'ai les message d'erreurs suivant:
Code:
1 2 3 4 5 6 7 8 9
|
Traceback (most recent call last):
File "Build.py", line 1160, in <module>
main(args[0], configfilename=opts.configfile)
File "Build.py", line 1148, in main
build(specfile)
File "Build.py", line 1111, in build
execfile(spec)
IOError: [Errno 2] No such file or directory: 'compil_test.spec' |
Pourtant le fichier compil_test.spec est dans le dossier de construction compil_test et ne génère pas de subdossier dist...:aie:
Je vais me tourner vers ce qu'a dit Tyrtamos pour l'instant... Mon but n'étant que de créer un exécutable pour Linux pour un programme pas vraiment compliquer.:ccool:
Si quelqu'un sait pourquoi pyinstaller ne fonctionne pas comme dit dans la doc merci de nous le faire savoir.:ccool:
Le prog de tyrtamos fonctionne parfaitement, je le remercie, et je voulais lui demander si son prog va chercher le chemin vers les modules contenus dans le programme a compiler par la ligne:
Code:
path = sys.path.append("./")
ou si cxfreeze n'en a pas besoin ?:calim2:
Sympa on peut meme ajouter une icone.:ccool: