2009-12-15 10 views

Trả lời

0

Thật không may, py2exe đã thay đổi cách mà các công trình mô-đun của họ, vì vậy ví dụ cung cấp here làm không hoạt động nữa.

Tôi đã có thể thực hiện việc này bằng cách ghi đè một trong các chức năng của py2exe và sau đó chèn chúng vào tệp nén được tạo bởi py2exe.

Dưới đây là một ví dụ:

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