Bagaimana cara mengonversi .py menjadi .exe untuk Python?

126

Saya mencoba mengonversi program Python yang cukup sederhana menjadi program yang dapat dieksekusi dan tidak dapat menemukan apa yang saya cari, jadi saya punya beberapa pertanyaan (saya menjalankan Python 3.6):

Metode melakukan ini yang saya temukan sejauh ini adalah sebagai berikut

  1. mengunduh Python versi lama dan menggunakan pyinstaller/py2exe
  2. menyiapkan lingkungan virtual di Python 3.6 yang memungkinkan saya melakukan 1.
  3. mengunduh konverter Python ke C ++ dan menggunakannya.

Inilah yang saya coba / masalah apa yang saya hadapi.

  • Saya menginstal pyinstallersebelum unduhan yang diperlukan sebelumnya (pypi-sesuatu) jadi tidak berhasil. Setelah mengunduh file prasyarat, pyinstallermasih tidak mengenalinya.
  • Jika saya menyiapkan virtualenv dengan Python 2.7, apakah saya benar-benar perlu menginstal Python 2.7?
  • demikian pula, satu-satunya konverter python ke C ++ yang saya lihat hanya berfungsi hingga Python 3.5 - apakah saya perlu mengunduh dan menggunakan versi ini jika mencoba ini?
pengguna7396807
sumber
4
Tidak yakin mengapa ini tidak disukai (mungkin karena rekomendasi alat offtopic untuk SO), tetapi pertanyaan ini akan berguna untuk orang lain di masa mendatang. Pertanyaan serupa sebelumnya belum ditandai offtopic, misalnya stackoverflow.com/questions/2136837/…
Chris_Rands

Jawaban:

127

Langkah-langkah untuk mengonversi .py menjadi .exe dengan Python 3.6

  1. Instal Python 3.6 .
  2. Instal cx_Freeze, (buka command prompt Anda dan ketik pip install cx_Freeze.
  3. Instal idna, (buka command prompt Anda dan ketik pip install idna.
  4. Tulis .pyprogram bernama myfirstprog.py.
  5. Buat file python baru dengan nama setup.pydi direktori skrip Anda saat ini.
  6. Di dalam setup.pyfile, salin kode di bawah ini dan simpan.
  7. Dengan menekan shift, klik kanan pada direktori yang sama, sehingga Anda dapat membuka jendela prompt perintah.
  8. Di prompt, ketik python setup.py build
  9. Jika skrip Anda bebas dari kesalahan, maka tidak akan ada masalah dalam membuat aplikasi.
  10. Periksa folder yang baru dibuat build. Ini memiliki folder lain di dalamnya. Di dalam folder itu Anda dapat menemukan aplikasi Anda. Menjalankannya. Buat dirimu bahagia.

Lihat script asli di blog saya .

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
)

EDIT:

  • pastikan bahwa alih-alih myfirstprog.pyAnda harus memasukkan .pynama file ekstensi Anda seperti yang dibuat pada langkah 4 ;
  • Anda harus menyertakan masing-masing importpaket ed di Anda .pyke packagesdaftar (ex: packages = ["idna", "os","sys"])
  • any name, any number, any descriptiondi setup.pyberkas tidak harus tetap sama, Anda harus mengubahnya sesuai (ex: name = "<first_ever>", version = "0.11", description = '')
  • yang importpaket ed harus diinstal sebelum Anda mulai langkah 8 .
Maria Irudaya Regilan J
sumber
10
Apakah ada cara untuk membuatnya 'mandiri' dapat dieksekusi? Jika saya melanjutkan seperti yang Anda sarankan dalam artikel Anda, saya berakhir dengan folder exe.win.32-3.6. yang penuh dengan file dan direktori pendukung (seperti 'collections /', 'email', dll.). Sangat banyak untuk cetakan sederhana ('halo'). Saya ingin membuat satu, satu file yang dapat dieksekusi, yang akan berjalan di komputer lain sebagaimana adanya, tanpa memerlukan file lain. Apakah ada opsi build untuk itu?
FanaticD
2
@FanaticD Python bukan pilihan terbaik Anda. Cython (mimpi buruk untuk bekerja) atau Nuitka akan menjadi taruhan terbaik Anda. Tetapi membuat mereka bekerja adalah pencapaian tersendiri.
Tetora
Apakah ini akan berhasil dengan Python 3.5.3? (Versi stabil terakhir pada Debian 9 Stretch).
Gerard
Bagaimana saya mengimpor from sklearn.externals import joblib? seperti yang disebutkan dalam edit, langkah 2.
Jack
77

Python 3.6 didukung oleh PyInstaller.

Buka jendela cmd di folder Python Anda (buka jendela perintah dan gunakan cdatau sambil menahan shift, klik kanan di Windows Explorer dan pilih 'Buka jendela perintah di sini'). Lalu masuk saja

pip install pyinstaller

Dan itu dia.

Cara termudah untuk menggunakannya adalah dengan masuk pada command prompt Anda

pyinstaller file_name.py

Untuk detail lebih lanjut tentang cara menggunakannya, lihat pertanyaan ini .

Rodrigo Nascimento
sumber
4
baru saja diuji dengan python 3.7.0. Banyak peringatan meskipun tetapi berhasil dikompilasi dan berjalan di windows 10
Ole_S
2
Saya menyusun program dengan python 3.5.0 dan tidak ada peringatan atau kesalahan, dan itu berjalan seperti yang diharapkan
Menotdan
Adakah yang tahu apa yang penting dalam Pyinstaller? Apakah exe yang dibangun di Windows 10 berfungsi di Windows 8? atau akankah windows 10 32bit membangun bekerja di sistem windows 10 64 bit?
Derik81
27

Ada proyek open source yang disebut auto-py-to-exe di GitHub . Sebenarnya ini juga hanya menggunakan PyInstaller secara internal tetapi karena ia memiliki GUI sederhana yang mengontrol PyInstaller, ini mungkin merupakan alternatif yang nyaman. Itu juga dapat mengeluarkan file mandiri berbeda dengan solusi lain. Mereka juga menyediakan video yang menunjukkan cara mengaturnya.

GUI:

Otomatis Py ke Exe

Keluaran:

Keluaran

Mengobrol
sumber
2
Anda harus menyebutkan bahwa itu membutuhkan MVC ++. galat: Microsoft Visual C ++ 14.0 diperlukan.
SKR
3
Saya tidak menemukan nilai apa pun dalam hal ini karena ini dibangun di atas pyinstaller dan jika Anda mendapatkan kesalahan di pyinstaller, Anda juga akan mendapatkannya di sini!
CV_passionate
9

Saya tidak dapat memberi tahu Anda apa yang terbaik, tetapi alat yang saya gunakan dengan sukses di masa lalu adalah cx_Freeze . Mereka baru-baru ini memperbarui (pada 7 Januari '17) ke versi 5.0.1 dan mendukung Python 3.6.

Berikut pypi https://pypi.python.org/pypi/cx_Freeze

Dokumentasi menunjukkan bahwa ada lebih dari satu cara untuk melakukannya, tergantung kebutuhan Anda. http://cx-freeze.readthedocs.io/en/latest/overview.html

Saya belum mencobanya, jadi saya akan menunjuk ke sebuah posting di mana cara sederhana untuk melakukannya dibahas. Beberapa hal mungkin atau mungkin tidak berubah.

Bagaimana cara menggunakan cx_freeze?

Gerschel
sumber
11
Perlu disebutkan, cxFreeze tidak menjalankan file tunggal yang dapat dieksekusi.
Eddie Hart
7

Saya telah menggunakan Nuitka dan PyInstaller dengan paket saya, PySimpleGUI.

Nuitka Ada masalah saat memilih untuk dikompilasi dengan Nuikta. Salah satu kontributor proyek mengembangkan skrip yang memperbaiki masalah.

Jika Anda tidak menggunakan tkinter itu mungkin "hanya bekerja" untuk Anda. Jika Anda menggunakan tkinter, katakan demikian dan saya akan mencoba menerbitkan skrip dan instruksinya.

PyInstaller Saya menjalankan 3.6 dan PyInstaller bekerja dengan baik! Perintah yang saya gunakan untuk membuat file exe saya adalah:

pyinstaller -wF myfile.py

-WF akan membuat satu file EXE. Karena semua program saya memiliki GUI dan saya tidak ingin jendela perintah ditampilkan, opsi -w akan menyembunyikan jendela perintah.

Ini sedekat mungkin untuk menjalankan apa yang tampak seperti program Winforms yang ditulis dengan Python.

[Perbarui 20-Jul-2019]

Ada solusi berbasis GUI PySimpleGUI yang menggunakan PyInstaller. Ini menggunakan PySimpleGUI. Ini disebut pysimplegui-exemaker dan dapat diinstal dengan pip.

pip install PySimpleGUI-exemaker

Untuk menjalankannya setelah menginstal:

python -m pysimplegui-exemaker.pysimplegui-exemaker

MikeyB
sumber
5

Sekarang Anda dapat mengubahnya dengan menggunakan PyInstaller. Saya bekerja bahkan dengan Python 3.

Langkah:

  1. Jalankan PC Anda
  2. Buka command prompt
  3. Masukkan perintah pip install pyinstaller
  4. Saat terinstal, gunakan perintah 'cd' untuk masuk ke direktori kerja.
  5. Jalankan perintah pyinstall <filename>
Tejas Joshi
sumber
Mengapa orang-orang meremehkan ini? Saya hanya memposting jawaban ini demi membantu.
Tejas Joshi
3
karena tidak berfungsi pada Python 3.6 yang secara khusus menulis OP yang dia gunakan.
uri
Pyinstaller seharusnya berfungsi sekarang. Jika tidak, beri tahu saya di komentar
Tejas Joshi