Làm cách nào để chuyển đổi tệp .py thành .exe cho Python?


126

Tôi đang cố gắng chuyển đổi một chương trình Python khá đơn giản thành một chương trình thực thi và không thể tìm thấy những gì tôi đang tìm kiếm, vì vậy tôi có một số câu hỏi (Tôi đang chạy Python 3.6):

Các phương pháp thực hiện điều này mà tôi đã tìm thấy cho đến nay như sau

  1. tải xuống phiên bản Python cũ và sử dụng pyinstaller/py2exe
  2. thiết lập một môi trường ảo trong Python 3.6 sẽ cho phép tôi thực hiện 1.
  3. tải xuống trình chuyển đổi Python sang C ++ và sử dụng nó.

Đây là những gì tôi đã thử / những vấn đề tôi gặp phải.

  • Tôi đã cài đặt pyinstallertrước bản tải xuống cần thiết trước nó (pypi-something) nên nó không hoạt động. Sau khi tải xuống tệp điều kiện tiên quyết, pyinstallervẫn không nhận ra nó.
  • Nếu tôi đang thiết lập virtualenv bằng Python 2.7, tôi có thực sự cần cài đặt Python 2.7 không?
  • tương tự, trình chuyển đổi python sang C ++ duy nhất mà tôi thấy chỉ hoạt động cho đến Python 3.5 - tôi có cần tải xuống và sử dụng phiên bản này nếu cố gắng này không?

4
Không chắc tại sao điều này bị phản đối (có lẽ vì các đề xuất công cụ không phù hợp với SO), nhưng câu hỏi này sẽ hữu ích cho những người khác trong tương lai. Các câu hỏi tương tự trước đó chưa được đánh dấu là offtopic, ví dụ: stackoverflow.com/questions/2136837/…
Chris_Rands

Câu trả lời:


127

Các bước chuyển đổi .py sang .exe trong Python 3.6

  1. Cài đặt Python 3.6 .
  2. Cài đặt cx_Freeze, (mở dấu nhắc lệnh của bạn và nhập pip install cx_Freeze .
  3. Cài đặt idna, (mở dấu nhắc lệnh của bạn và nhập pip install idna .
  4. Viết một .pychương trình có tênmyfirstprog.py .
  5. Tạo một tệp python mới có tên setup.py trên thư mục hiện tại của tập lệnh của bạn.
  6. bên trong setup.py tệp, hãy sao chép mã bên dưới và lưu nó.
  7. Với shift được nhấn, nhấp chuột phải vào cùng một thư mục, vì vậy bạn có thể mở cửa sổ nhắc lệnh.
  8. Trong lời nhắc, hãy nhập python setup.py build
  9. Nếu tập lệnh của bạn không có lỗi, thì sẽ không có vấn đề gì khi tạo ứng dụng.
  10. Kiểm tra thư mục mới tạo build. Nó có một thư mục khác trong đó. Trong thư mục đó, bạn có thể tìm thấy ứng dụng của mình. Chạy nó. Làm cho mình hạnh phúc.

Xem kịch bản gốc trong blog của tôi .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

BIÊN TẬP:

  • hãy chắc chắn rằng thay vì myfirstprog.pybạn nên đặt .pytên tệp mở rộng của mình như đã tạo ở bước 4 ;
  • bạn nên đưa từng importgói ed .pyvào packagesdanh sách của mình (ví dụ packages = ["idna", "os","sys"]:)
  • any name, any number, any descriptiontrong setup.pytệp không được giữ nguyên, bạn nên thay đổi nó cho phù hợp (ví dụ name = "<first_ever>", version = "0.11", description = '':)
  • các importgói ed phải được cài đặt trước khi bạn bắt đầu bước 8 .

10
Có cách nào để làm cho nó 'độc lập' có thể thực thi được không? Nếu tôi tiếp tục như bạn tư vấn trong bài viết của mình, tôi sẽ kết thúc với thư mục exe.win.32-3.6. có đầy đủ các tệp và thư mục hỗ trợ (như 'bộ sưu tập /', 'email', v.v.). Rất nhiều cho một bản in đơn giản ('xin chào'). Tôi muốn tạo một, một tệp duy nhất, có thể thực thi, sẽ chạy trên một máy tính khác mà không cần các tệp khác. Có một tùy chọn xây dựng cho điều đó?
FanaticD


2
@FanaticD Python không phải là đặt cược tốt nhất của bạn. Cython (một cơn ác mộng khi phải làm việc) hoặc Nuitka sẽ là lựa chọn tốt nhất của bạn. Nhưng có được những điều đó làm việc tự nó là một thành tựu.
Tetora

Điều này có hoạt động trong Python 3.5.3 không? (Phiên bản ổn định cuối cùng trên Debian 9 Stretch).
Gerard

Tôi sẽ nhập from sklearn.externals import joblibnhư thế nào? như đã đề cập trong bản chỉnh sửa, bước 2.
Jack

77

Python 3.6 được hỗ trợ bởi PyInstaller.

Mở cửa sổ cmd trong thư mục Python của bạn (mở cửa sổ lệnh và sử dụng cdhoặc trong khi giữ phím shift, nhấp chuột phải vào nó trên Windows Explorer và chọn 'Mở cửa sổ lệnh tại đây'). Sau đó, chỉ cần nhập

pip install pyinstaller

Và đó là nó.

Cách đơn giản nhất để sử dụng nó là nhập vào dấu nhắc lệnh của bạn

pyinstaller file_name.py

Để biết thêm chi tiết về cách sử dụng nó, hãy xem câu hỏi này .


4
vừa thử nghiệm với python 3.7.0. Rất nhiều cảnh báo mặc dù nhưng biên soạn thành công và chạy trên windows 10
Ole_S

2
Tôi biên soạn một chương trình với python 3.5.0 và không có cảnh báo hoặc lỗi, và nó chạy như mong đợi
Menotdan

Có ai biết điều gì quan trọng trong Pyinstaller không? Liệu một exe xây dựng trên windows 10 có hoạt động trong windows 8 không? hay bản dựng windows 10 32bit sẽ hoạt động trong hệ thống windows 10 64 bit?
Derik81

27

Có một dự án mã nguồn mở được gọi là auto-py-to-exe trên GitHub . Trên thực tế, nó cũng chỉ sử dụng PyInstaller trong nội bộ nhưng vì nó có một GUI đơn giản kiểm soát PyInstaller nên nó có thể là một giải pháp thay thế thoải mái. Nó cũng có thể xuất ra một tệp độc lập trái ngược với các giải pháp khác. Họ cũng cung cấp một video hướng dẫn cách thiết lập nó.

GUI:

Auto Py sang Exe

Đầu ra:

Đầu ra


2
Bạn nên đề cập rằng nó yêu cầu MVC ++. lỗi: Microsoft Visual C ++ 14.0 là bắt buộc.
SKR

3
Tôi không tìm thấy bất kỳ giá trị nào trong điều này vì nó được xây dựng trên pyinstaller và nếu bạn gặp lỗi trong pyinstaller, bạn cũng sẽ gặp nó ở đây!
CV_passionate

9

Tôi không thể cho bạn biết điều gì tốt nhất, nhưng một công cụ tôi đã sử dụng thành công trong quá khứ là cx_Freeze . Gần đây họ đã cập nhật (vào ngày 7 tháng 1 năm '17) lên phiên bản 5.0.1 và nó hỗ trợ Python 3.6.

Đây là pypi https://pypi.python.org/pypi/cx_Freeze

Tài liệu cho thấy rằng có nhiều cách để làm điều đó, tùy thuộc vào nhu cầu của bạn. http://cx-freeze.readthedocs.io/en/latest/overview.html

Tôi vẫn chưa thử nó, vì vậy tôi sẽ chỉ đến một bài đăng có thảo luận về cách làm đơn giản. Mặc dù vậy, một số điều có thể đã thay đổi hoặc không.

Làm cách nào để sử dụng cx_freeze?


11
Đáng nói hơn, cxFreeze không thực thi một tập tin đơn lẻ.
Eddie Hart

7

Tôi đã sử dụng Nuitka và PyInstaller với gói của tôi, PySimpleGUI.

Nuitka Đã xảy ra sự cố khi biên dịch tkinter với Nuikta. Một trong những người đóng góp dự án đã phát triển một tập lệnh để khắc phục sự cố.

Nếu bạn không sử dụng tkinter, nó có thể "chỉ hoạt động" cho bạn. Nếu bạn đang sử dụng tkinter, hãy nói như vậy và tôi sẽ cố gắng xuất bản tập lệnh và hướng dẫn.

PyInstaller Tôi đang chạy 3.6 và PyInstaller đang hoạt động rất tốt! Lệnh tôi sử dụng để tạo tệp exe của mình là:

pyinstaller -wF myfile.py

-WF sẽ tạo một tệp EXE duy nhất. Vì tất cả các chương trình của tôi đều có GUI và tôi không muốn cửa sổ lệnh hiển thị, tùy chọn -w sẽ ẩn cửa sổ lệnh.

Điều này gần đạt được những gì trông như thế nào một chương trình Winforms để chạy được viết bằng Python.

[Cập nhật ngày 20 tháng 7 năm 2019]

Có giải pháp dựa trên PySimpleGUI GUI sử dụng PyInstaller. Nó sử dụng PySimpleGUI. Nó được gọi là pysimplegui-exemaker và có thể được cài đặt pip.

pip install PySimpleGUI-exemaker

Để chạy nó sau khi cài đặt:

python -m pysimplegui-exemaker.pysimplegui-exemaker


5

Bây giờ bạn có thể chuyển đổi nó bằng cách sử dụng PyInstaller. Tôi làm việc với cả Python 3.

Các bước:

  1. Khởi động PC của bạn
  2. Mở dấu nhắc lệnh
  3. Nhập lệnh pip install pyinstaller
  4. Khi nó được cài đặt, hãy sử dụng lệnh 'cd' để chuyển đến thư mục làm việc.
  5. Chạy lệnh pyinstall <filename>

Tại sao mọi người lại phản đối điều này? Tôi chỉ đăng câu trả lời này với mục đích giúp đỡ.
Tejas Joshi

3
bởi vì nó không hoạt động trên Python 3.6 mà OP đã viết cụ thể mà anh ấy đang sử dụng.
uri

Pyinstaller sẽ hoạt động ngay bây giờ. Nếu không, hãy cho tôi biết trong phần bình luận
Tejas Joshi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.