Saya ingin membuat satu yang dapat dieksekusi dari proyek Python saya. Seorang pengguna harus dapat mengunduh dan menjalankannya tanpa perlu menginstal Python. Jika saya baru saja mendistribusikan paket, saya dapat menggunakan pip, wheel, dan PyPI untuk membangun dan mendistribusikannya, tetapi ini mengharuskan pengguna memiliki Python dan tahu cara menginstal paket. Apa yang dapat saya gunakan untuk membangun executable mandiri dari proyek Python?
python
compilation
exe
packaging
software-distribution
ShadowFlame
sumber
sumber
pdb
) tidak memiliki akses mudah ke file yang sedang dieksekusi,py2exe
(tidak tahu tentang yang lain) tidak menyertakan.py
file sehingga Anda tidak akan melihat baris sumber di pelacakan tumpukan.Jawaban:
Berikut ini beberapa yang umum. Kecuali secara eksplisit disebutkan, semua proyek yang tercantum di bawah ini secara aktif dipertahankan pada pengeditan terakhir saya (Januari 2020).
Saya juga menyertakan tautan ke situs web, repo, dan daftar PyPi masing-masing jika Anda ingin memeriksa sendiri seberapa sering mereka diperbarui.
Selain itu, kecuali dinyatakan lain, semua program yang tercantum di bawah ini akan menghasilkan exe khusus untuk sistem operasi yang dijalankan. Jadi misalnya, menjalankan Pyinstaller di Windows akan menghasilkan exe Windows, tetapi menjalankan Pyinstaller di Linux akan menghasilkan exe Linux. Jika Anda ingin membuat exe untuk beberapa sistem operasi, Anda harus menggunakan mesin virtual atau menggunakan sesuatu seperti Wine .
Program-program berikut semuanya bekerja dengan cara yang sama - mereka menggabungkan Python dan program Anda, menggabungkannya secara efektif untuk menghasilkan file yang dapat dieksekusi.
PyInstaller:
cx_Freeze:
py2app:
Catatan: versi sebelumnya dari posting ini termasuk artikel untuk py2exe ( repo ) dan bbfreeze ( repo ). Kedua proyek telah dihapus dari daftar ini: mereka telah melihat sedikit atau tidak ada aktivitas selama beberapa tahun dan tampaknya sama sekali tidak terawat. Lihat riwayat edit untuk artikel lama.
Tentu saja, itu bukan satu-satunya cara untuk melakukan sesuatu:
pynsist:
Catatan lain: Pynsist tampaknya mendukung penggabungan semua versi Python sembarang dengan aplikasi Anda. Namun, alat itu sendiri membutuhkan Python 3.5+ untuk dijalankan.
Pynsist akan membuat penginstal Windows untuk program Anda yang akan langsung menginstal Python di komputer pengguna alih-alih memaketkannya dengan kode Anda dan membuat pintasan yang tertaut ke skrip Python Anda. Meskipun program ini hanya menghasilkan penginstal Windows, tampaknya Anda masih dapat menjalankan Pynsist di komputer Mac dan Linux.
Nuitka:
cython:
Preferensi pribadi saya adalah menggunakan PyInstaller karena ini yang paling mudah bagi saya untuk memulai dan menjalankannya, dirancang untuk bekerja dengan baik dengan berbagai pustaka populer seperti numpy atau pygame, dan memiliki kompatibilitas yang baik dengan berbagai OS dan versi Python.
Namun, saya juga berhasil membuat berbagai exe menggunakan cx_Freeze tanpa terlalu banyak kesulitan, jadi Anda juga harus mempertimbangkan untuk mencoba program itu.
Saya belum sempat mencoba pynist, Nuitka, atau Cython secara ekstensif, tetapi sepertinya solusi yang cukup menarik dan inovatif. Jika Anda mengalami masalah saat menggunakan kelompok program pertama, mungkin ada baiknya untuk mencoba salah satu dari ketiganya. Karena mereka bekerja secara fundamental berbeda dari program bergaya Pyinstaller / cx_freeze, mereka mungkin berhasil dalam kasus-kasus tepi ganjil di mana grup pertama gagal.
Secara khusus, saya pikir pynist adalah cara yang baik untuk menghindari seluruh masalah pendistribusian kode Anda sama sekali: Mac dan Linux sudah memiliki dukungan asli untuk Python, dan hanya menginstal Python di Windows mungkin benar-benar solusi terbersih. (Kelemahannya sekarang adalah Anda perlu khawatir tentang menargetkan beberapa versi pustaka pemasangan Python +).
Nuitka dan Cython (dalam pengalaman saya yang terbatas) tampaknya bekerja dengan cukup baik. Sekali lagi, saya sendiri belum mengujinya secara ekstensif, jadi pengamatan utama saya adalah bahwa mereka tampaknya membutuhkan waktu lebih lama untuk menghasilkan exe daripada program gaya "freeze".
Semua ini dikatakan, mengubah program Python Anda menjadi yang dapat dieksekusi bukanlah satu-satunya cara untuk mendistribusikan kode Anda. Untuk mempelajari lebih lanjut tentang opsi lain yang tersedia, lihat tautan berikut ini:
sumber
msvcrxx.dll
, di manaxx
nomor versi) untuk menjalankan .exe (atau meminta pengguna untuk menginstalnya sendiri). Ini diperlukan karena Python dibuat di Windows menggunakan Visual Studio.pyinstaller masih dalam pengembangan aktif. Anda dapat melihat perubahan terbaru di GitHub.
Ini memiliki dukungan untuk ketiga platform utama:
dan mendukung Python versi 2.6 dan 2.7. Itu tidak mendukung Python 3, tetapi ada cabang Python 3 eksperimental .
Memperbarui
Pada versi 3.2.1 ini mendukung Python 2.7, 3.3-3.5
sumber
Penggunaan
pip install auto-py-to-exe
yang lebih baik yang menyediakan UI cantik dengan semua opsi yang diperlukan untuk membuat file yang dapat dieksekusi.Setelah menginstal cukup ketik
auto-py-to-exe
terminal atau command prompt Anda.sumber