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 80 81 82 83 84 85 86 87
| #!/usr/bin/env python
# coding: Latin-1 -*-
# Module de création d'exécutable Windows
# Nécessite l'outil py2exe
import sys
import os
import stat
from distutils.core import setup
import py2exe
# Suppression de répertoire (récursive)
def delTree(file):
try:
status=os.stat(file)[stat.ST_MODE]
if stat.S_ISDIR(status)\
and not stat.S_ISLNK(status):
for name in os.listdir(file):
delTree("%s/%s" % (file, name))
os.rmdir(file)
else:
os.unlink(file)
print "removing %s" % file
except:
pass
# delTree()
# Copie d'arborescence (résursive)
def copy(old, new):
print "copying %s => %s" % (old, new)
status=os.stat(old)[stat.ST_MODE]
if stat.S_ISDIR(status)\
and not stat.S_ISLNK(status):
delTree(new)
os.mkdir(new)
for name in os.listdir(old):
copy("%s/%s" % (old, name), "%s/%s" % (new, name))
else:
fi=os.open(old, os.O_RDONLY|os.O_BINARY)
fo=os.open(new, os.O_WRONLY|os.O_TRUNC|os.O_CREAT|os.O_BINARY)
while True:
data=os.read(fi, 10240)
if data=="": break
os.write(fo, data)
os.close(fi)
os.close(fo)
# copy()
# Effacement anciens répertoires
delTree("dist")
delTree("build")
# Préparation environnement
if len(sys.argv) < 2:
sys.argv.append("py2exe")
else:
if sys.argv[1] != "py2exe": sys.argv[1]="py2exe"
# Création exécutable
setup(
console=[{"script" : "MonPgm.py"}],
options={
"py2exe" : {
"includes":
[
"sip",
"numpy",
"PyQt4.QtCore",
"PyQt4.QtSvg"
]
}
}
)
# Effacement répertoire de travail devenu inutile
delTree("build")
# Copie des fichiers et dossiers utiles
for file in (
"logoPJ.xpm",
"Logo.jpg",
"ChangeLog.txt",
"etc",
"doc",
):
copy(file, "dist/%s" % (file)) |
Partager