2010-01-26 90 views
67

Tôi đã viết một tập lệnh giúp người dùng Windows trong cuộc sống hàng ngày của mình. Tôi chỉ muốn gửi cho cô ấy .exe và không yêu cầu cô ấy cài đặt python, dll hoặc phải xử lý bất kỳ tệp bổ sung nào.Quy trình chuyển đổi tập lệnh Python đơn giản thành Windows thực thi

Tôi đã đọc rất nhiều mục nhập ngăn xếp liên quan đến việc biên dịch các tập lệnh Python thành các tệp thi hành. Tôi hơi bối rối vì có rất nhiều lựa chọn nhưng một số có vẻ ngày tháng (không có cập nhật từ năm 2008) và không ai đủ đơn giản để tôi không hỏi ngay bây giờ sau một vài giờ dành cho việc này.

Tôi hy vọng có một cách tốt hơn, cập nhật để thực hiện việc này.

Tôi nhìn vào:

nhưng tôi không thể khiến họ làm việc hoặc không thể hiểu cách nhận kết quả tôi cần. Gần nhất tôi nhận được là với py2exe nhưng nó vẫn cho tôi MSVCR71.dll

Tôi sẽ đánh giá cao câu trả lời từng bước vì tôi cũng không thể làm theo một số câu trả lời tinh chỉnh ở đây yêu cầu một số hiểu biết trước để sử dụng py2exe hoặc một số công cụ khác.

Tôi đang sử dụng Python 2.5 làm một trong các mô-đun chỉ khả dụng cho phiên bản đó.

+1

* phần lớn thời gian bạn có thể bỏ qua dll MSVCR, tôi không phân phối nó với ứng dụng của tôi và chưa nghe bất kỳ lỗi nào (điểm quan trọng là chúng có thể đã xảy ra và tôi chưa có báo cáo về nó :)) –

+0

Bản sao có thể có của [py2exe - tạo tệp thực thi duy nhất] (http://stackoverflow.com/questions/112698/py2exe-generate-single-executable-file) –

+0

Sao chép có thể có của [Cách tạo một Python script độc lập thực thi để chạy mà không có bất kỳ phụ thuộc?] (https://stackoverflow.com/questions/5458048/how-to-make-a-python-script-standalone-executable-to-run-without-any-dependency) –

Trả lời

24

PyInstaller sẽ tạo một tệp đơn lẻ nếu bạn sử dụng tùy chọn --onefile (mặc dù những gì nó thực sự làm là trích xuất sau đó tự chạy).

Có hướng dẫn PyInstaller đơn giản here. Nếu bạn có thắc mắc về việc sử dụng nó, xin vui lòng gửi cho họ ...

8

tôi sẽ tham gia @Nicholas trong việc giới thiệu PyInstaller (với --onefile cờ), nhưng được cảnh báo: làm không sử dụng "phiên bản mới nhất" , PyInstaller 1.3 - đó là năm cũ. Sử dụng "tiền phát hành" 1.4, tải xuống số here - hoặc thậm chí tốt hơn mã từ svn repo - cài đặt SVN và chạy svn co http://svn.pyinstaller.org/trunk pyinstaller.

Như @Nicholas ngụ ý, thư viện năng động không thể chạy từ tập tin giống như phần còn lại của thi - nhưng may mắn thay họ có thể đóng gói cùng với tất cả phần còn lại trong một thực thi "tự giải nén" mà sẽ giải nén chính nó vào một số thư mục tạm thời khi cần thiết; PyInstaller làm tốt công việc này (và ở nhiều thứ khác - py2exe là phổ biến hơn, nhưng pyinstaller theo ý kiến ​​của tôi là thích hợp hơn ở tất cả các khía cạnh khác).

+0

Tôi đã tra cứu các liên kết bạn đã cung cấp ở đây, chúng không còn nữa. 'PyIstaller' có hoạt động nhiều hơn một tệp và với' Python 2.7' không? –

+2

PyInstaller hiện đang sống trên GitHub, nó lên đến phiên bản 2.1, và hỗ trợ Python 2.7 (trong số các phiên bản khác). Tất nhiên "nó hoạt động trên nhiều hơn một tập tin" (như đầu vào) nhưng toàn bộ điểm là sản xuất một tập tin duy nhất là đầu ra. Xem https://github.com/pyinstaller/pyinstaller/wiki và liên kết từ đó. –

2

bạn có thể muốn xem liệu ứng dụng của bạn có thể chạy trong IronPython hay không.Nếu vậy, bạn có thể biên dịch nó vào một exe http://www.codeplex.com/IronPython

+1

Nếu bạn sử dụng IronPython (tôi đang phát triển một phần mềm thương mại trong đó hãy lưu ý rằng nó yêu cầu .NET Framework 2.0) – DCC

13

Sử dụng py2exe, bao gồm này trong setup.py của bạn:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'bundle_files': 1}}, 
    windows = [{'script': "YourScript.py"}], 
    zipfile = None, 
) 

sau đó bạn có thể chạy nó thông qua command prompt/Nhàn rỗi, cả hai tác phẩm cho tôi. Hy vọng nó sẽ giúp

11

tôi khuyên bạn nên truy cập http://sourceforge.net/projects/py2exe/files/latest/download?source=files để tải xuống py2exe. Sau đó tạo một tệp python có tên là setup.py. Bên trong nó, gõ

from distutils.core import setup 
import py2exe 
setup(console=['nameoffile.py']) 

Lưu trong thư mục người dùng của bạn Cũng lưu các tập tin bạn muốn chuyển đổi trong thư mục đó cùng

command prompt loại

cửa sổ Run trong setup.py install py2exe

Nó nên in nhiều dòng của mã ...

Tiếp theo, mở thư mục dist.

Chạy tệp exe.

Nếu có các tệp cần thiết để chương trình hoạt động, hãy di chuyển chúng vào thư mục

Sao chép/Gửi thư mục dist cho người.

Tùy chọn: Thay đổi tên của thư mục, TP

Hy vọng nó hoạt động :)

+0

Điều này thật tuyệt vời, tôi đã tập lệnh của mình trong một số thư mục đang sử dụng lẫn nhau, nhưng phương pháp này đã chọn tất cả của các phụ thuộc. Tôi đã mua pyinstaller-2.0 và không tải các phụ thuộc gây ra kết quả thực thi để in các lỗi liên quan đến việc nhập khẩu các phụ thuộc. – Aravind

+0

Tôi đã cố gắng sử dụng phương pháp này nhưng tôi đã không làm việc. Khi tôi gõ các thông tin trong dấu nhắc lệnh nó chỉ chạy kịch bản của tôi – kflaw

0

Bạn có thể tạo một trình cài đặt cho bạn tập tin EXE bởi:
1. Nhấn WinKey + R
2. Nhập "iexpress" (không có dấu ngoặc kép) vào cửa sổ chạy
3. Hoàn thành trình hướng dẫn để tạo chương trình cài đặt.
4. Phân phối EXE đã hoàn thành.

+3

Điều này là không chính xác – sricks

6

1) Nhận py2exe từ here, theo phiên bản Python của bạn.

2) Thực hiện một tập tin gọi là "setup.py" trong thư mục tương tự như kịch bản mà bạn muốn chuyển đổi, có đoạn mã sau:

from distutils.core import setup 
import py2exe 
setup(console=['myscript.py']) #change 'myscript' to your script 

3) Tới command prompt, điều hướng đến thư mục đó, và gõ:

python setup.py py2exe 

4) Nó sẽ tạo ra một "dist" thư mục trong t ông cùng một thư mục như kịch bản. Thư mục này chứa tệp .exe.

+1

Bạn có thể xóa câu trả lời này vì nó trùng lặp với câu trả lời của Bob dưới đây được đăng 2 năm trước đó. – sricks