Saya sedang membangun aplikasi Python dan tidak ingin memaksa klien saya untuk menginstal Python dan modul.
Jadi, apakah ada cara untuk mengkompilasi skrip Python untuk menjadi executable mandiri?
python
executable
Jeff
sumber
sumber
Jawaban:
Anda dapat menggunakan py2exe seperti yang sudah dijawab dan menggunakan cython untuk mengonversi
.py
file kunci Anda.pyc
, file yang dikompilasi C, seperti.dll
di Windows dan.so
di linux, jauh lebih sulit untuk dikembalikan daripada file biasa.pyo
dan.pyc
(dan juga mendapatkan kinerja!)sumber
Anda dapat menggunakan PyInstaller untuk mengemas program Python sebagai executable mandiri. Ini bekerja pada Windows, Linux, dan Mac.
sumber
Anda mungkin ingin menyelidiki Nuitka . Dibutuhkan kode sumber python dan mengubahnya menjadi panggilan C ++ API. Kemudian dikompilasi menjadi biner yang dapat dieksekusi (ELF di Linux). Sudah ada selama beberapa tahun sekarang dan mendukung berbagai versi Python.
Anda mungkin juga akan mendapatkan peningkatan kinerja jika Anda menggunakannya. Direkomendasikan.
sumber
Saya ingin mengkompilasi beberapa informasi yang berguna tentang membuat file mandiri di windows menggunakan Python 2.7.
Saya telah menggunakan py2exe dan berfungsi, tapi saya punya beberapa masalah.
Itu telah menunjukkan beberapa masalah untuk membuat file tunggal di Windows 64 bit: Menggunakan bundle_files = 1 dengan py2exe tidak berfungsi ;
Anda perlu membuat file setup.py agar bisa berfungsi. http://www.py2exe.org/index.cgi/Tutorial#Step2 ;
Saya memiliki masalah dengan dependensi yang harus Anda selesaikan dengan mengimpor paket dalam file setup;
Saya tidak dapat membuatnya bekerja sama dengan PyQt ..
Alasan terakhir ini membuat saya mencoba PyInstaller http://www.pyinstaller.org/ .
Menurut saya, itu jauh lebih baik karena:
Saya sarankan membuat file .bat dengan baris berikut misalnya (pyinstaller.exe harus di Windows Path):
Anda dapat membuat satu file, di antara opsi lain ( https://pyinstaller.readthedocs.io/en/stable/usage.html#options ).
Saya hanya punya satu masalah menggunakan PyInstaller dan paket multiprosesor yang diselesaikan dengan menggunakan resep ini: https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Multiprocessing .
Jadi, saya pikir, setidaknya untuk python 2.7, pilihan yang lebih baik dan lebih sederhana adalah PyInstaller.
sumber
--onefile
bendera tidak akan membantu Anda untuk membuatnya portabel di Windows, karena masih dieksekusi ingin link denganapi-ms-win-crt-runtime-l1-1-0.dll
perpustakaan (atau / dan lain-lain) yang harus diinstal melaluivcredist
paket. Jadi ketergantungan masih ada dan harus diinstal sebelum dijalankan.Ya, adalah mungkin untuk mengkompilasi skrip Python menjadi executable mandiri.
PyInstaller dapat digunakan untuk mengubah program Python menjadi executable yang berdiri sendiri, di bawah Windows , Linux , Mac OS X , FreeBSD , Solaris dan AIX . Ini adalah salah satu konverter yang direkomendasikan.
py2exe mengubah skrip Python menjadi hanya dapat dieksekusi di platform Windows.
Cython adalah kompiler statis untuk bahasa pemrograman Python dan bahasa pemrograman Cython yang diperluas.
sumber
Dan opsi ketiga adalah
cx_Freeze
, yaitu cross-platform.sumber
cx_Freeze
rilis terdaftar di pypi sejak akhir 2017. Apakah proyek ini ditinggalkan?Anda mungkin menyukai py2exe . Anda juga akan menemukan info di sana untuk melakukannya di linux
sumber
Gunakan py2exe .... gunakan di bawah ini mengatur file:
sumber
Saya suka pyinstaller - terutama varian "berjendela":
Ini akan membuat satu file * .exe tunggal di dist / folder.
sumber
Saya juga merekomendasikan pyinstaller untuk kompatibilitas yang lebih baik seperti python 2.3 - 2.7.
untuk py2exe , Anda harus memiliki python 2.6
sumber
Untuk skrip Python 3.2 satu-satunya pilihan adalah Cxfreeze. Bangun dari sumber kalau tidak tidak akan berhasil.
Untuk python 2.x saya sarankan pyinstaller karena dapat mengemas program python dalam satu executable, tidak seperti CxFreeze yang juga output library.
sumber
py2exe akan membuat file exe yang Anda inginkan, tetapi Anda harus memiliki versi MSVCR90.dll yang sama pada mesin Anda akan menggunakan exe baru Anda. Lihat http://www.py2exe.org/index.cgi/Tutorial untuk info lebih lanjut.
sumber
Anda dapat menemukan daftar utilitas distribusi yang terdaftar di @ https://wiki.python.org/moin/DistributionUtilities .
Saya menggunakan bbfreeze dan telah bekerja sangat baik (belum memiliki dukungan python 3).
sumber
.so
file, atau menyalin file .egg secara langsung dan semuanya akan ada dalam satu direktori (atau sebagai file tunggal). Tidak diperlukan instalasi.Ini membuat file EXE mandiri di Windows. CATATAN PENTING: File exe akan dihasilkan di folder bernama 'dist'
Anda dapat menginstal pyinstaller menggunakan
pip install PyInstaller
sumber
Tidak persis pengemasan kode python, tetapi sekarang ada juga pemarah dari google, yang mengubah kode menjadi Go. Itu tidak mendukung python C api, jadi itu mungkin tidak bekerja untuk semua proyek.
sumber
Menggunakan pyinstaller, saya menemukan metode yang lebih baik menggunakan cara pintas ke .exe daripada membuat
--onefile
. Bagaimanapun mungkin ada beberapa file data di sekitarnya dan jika Anda menjalankan aplikasi berbasis situs maka program Anda tergantung pada html, js, file css juga. Tidak ada gunanya memindahkan semua file ini di suatu tempat .. sebaliknya bagaimana jika kita memindahkan jalur kerja ke atas.Buat pintasan ke exe, pindahkan di atas dan atur target dan jalur start-in seperti yang ditentukan, agar jalur relatif menuju ke dist \ folder:
Target: %windir%\system32\cmd.exe /c start dist\web_wrapper\web_wrapper.exe Start in: "%windir%\system32\cmd.exe /c start dist\web_wrapper\"
Dapat mengganti nama pintasan ke apa pun sehingga mengubah nama menjadi "GTFS-Manager"Sekarang ketika saya menggandakan -Klik pintasan, seolah-olah saya python-lari file! Saya menemukan pendekatan ini lebih baik daripada yang
--onefile
sebagai:Oh, ingatlah untuk menghapus folder build setelah membangun, akan menghemat ukuran.
sumber
Gunakan Cython untuk mengonversi ke c, kompilasi, dan tautkan dengan gcc. Yang lain bisa, buat fungsi inti di c (yang ingin Anda susah untuk balikkan), kompilasi dan gunakan dorongan python untuk mengimpor kode yang dikompilasi (ditambah Anda mendapatkan eksekusi kode yang jauh lebih cepat). kemudian gunakan alat apa pun yang disebutkan untuk mendistribusikan.
sumber
Saya diberitahu bahwa PyRun, https://www.egenix.com/products/python/PyRun/ , juga merupakan opsi.
sumber