2009-12-15 1 views

Répondre

0

Malheureusement, py2exe a changé la façon dont leurs travaux de module, de sorte que l'exemple fourni here ne ne fonctionne plus.

J'ai été capable de le faire en remplaçant l'une des fonctions de py2exe, puis en les insérant simplement dans le fichier zip créé par py2exe.

Voici un exemple:

import py2exe 
import zipfile 

myFiles = [ 
    "C:/Users/Kade/Documents/ExampleFiles/example_1.doc", 
    "C:/Users/Kade/Documents/ExampleFiles/example_2.dll", 
    "C:/Users/Kade/Documents/ExampleFiles/example_3.obj", 
    "C:/Users/Kade/Documents/ExampleFiles/example_4.H", 
    ] 

def better_copy_files(self, destdir): 
    """Overriden so that things can be included in the library.zip.""" 

    #Run function as normal 
    original_copy_files(self, destdir) 

    #Get the zipfile's location 
    if self.options.libname is not None: 
     libpath = os.path.join(destdir, self.options.libname) 

     #Re-open the zip file 
     if self.options.compress: 
      compression = zipfile.ZIP_DEFLATED 
     else: 
      compression = zipfile.ZIP_STORED 
     arc = zipfile.ZipFile(libpath, "a", compression = compression) 

     #Add your items to the zipfile 
     for item in myFiles: 
      if self.options.verbose: 
       print("Copy File %s to %s" % (item, libpath)) 
      arc.write(item, os.path.basename(item)) 
     arc.close() 

#Connect overrides 
original_copy_files = py2exe.runtime.Runtime.copy_files 
py2exe.runtime.Runtime.copy_files = better_copy_files 
Questions connexes