2009-04-01 22 views
16

là có một cách để tạo ra một độc lập .exe từ một kịch bản python. Các tệp thi hành được tạo bằng py2exe chỉ có thể chạy với pythonXX.dll. Tôi muốn có một exe độc ​​lập hoàn toàn không yêu cầu cài đặt thư viện thời gian chạy python. Nó giống như một vấn đề liên kết nhưng sử dụng thư viện tĩnh thay vì một thư viện động và nó cũng hữu ích khi áp dụng một dải để loại bỏ các biểu tượng không sử dụng.Tạo một cửa sổ độc lập exe mà không yêu cầu pythonXX.dll

Bất kỳ ý tưởng nào?

Cảm ơn.

Alessandro

Trả lời

17

Bạn có thể làm điều này trong phiên bản mới nhất của py2exe ...
Chỉ cần thêm một cái gì đó giống như mã bên dưới trong tệp setup.py của bạn (phần chính là 'bundle_files': 1).

Để bao gồm gói TkInter của bạn trong quá trình cài đặt, hãy sử dụng phím 'bao gồm'.

distutils.core.setup(
     windows=[ 
      {'script': 'yourmodule.py', 
      'icon_resources': [(1, 'moduleicon.ico')] 
      } 
     ], 
     zipfile=None, 
     options={'py2exe':{ 
         'includes': ['tkinter'], 
         'bundle_files': 1 
         } 
     } 
) 
+0

Giải pháp này hoạt động tốt nhưng điều gì về việc đưa tkinter vào exe? Sự cố có thể xảy ra nếu tôi di chuyển nó ra khỏi thư mục dist nhưng nó hoạt động tốt bên trong nơi có thư mục "tcl". – alexroat

+0

ooops, xin lỗi, với tùy chọn 'bundle_files': 1 nó không hoạt động cả khi khởi chạy exe từ thư mục dist hoặc từ bên ngoài. Có cách nào để bao gồm thư viện tcl trong exe không? Cảm ơn. – alexroat

+0

Tôi đã cập nhật biến tùy chọn để chỉ cho bạn cách bao gồm các gói khác. –

1

Đây không phải là cách tốt nhất để làm điều đó, nhưng bạn có thể xem xét sử dụng thực thi SFX Archive với cả .exe và .dll file bên trong, và thiết lập nó để thực thi tập tin .exe của bạn khi nó tăng gấp đôi đã nhấp.

5

Do cách trình liên kết động của Windows hoạt động, bạn không thể sử dụng thư viện tĩnh nếu bạn sử dụng .pyd hoặc .dll Mô-đun Python; DLL được nạp trong Windows không tự động chia sẻ không gian biểu tượng của chúng với tệp thực thi và do đó yêu cầu một DLL riêng biệt chứa các biểu tượng Python.

4

Nếu mục đích của bạn có một thực thi duy nhất là để giảm bớt tải/gửi email, vv, tôi đã giải quyết điều này bằng cách bundling sản lượng py2exe sử dụng Inno Setup. Điều này thực sự tốt hơn là có một tệp thực thi duy nhất, vì thay vì cung cấp tệp thi hành có thể được đưa vào một thư mục nào đó, ứng dụng Windows hoạt động tốt sẽ cung cấp trình gỡ cài đặt, hiển thị trong applet Add/Remove Programs, vv. Cái này dành cho bạn.

Các vấn đề liên quan