Menindaklanjuti masalah https://github.com/cool-RR/PythonTurtle/pull/105#issuecomment -421965482, #106 dan #90, saya ingin mulai mengumpulkan informasi tentang cara (terbaik) melakukan pengemasan untuk semua platform PythonTurtle berjalan. Ketika kita tahu bagaimana melakukan pengemasan secara manual, akan menjadi tugas yang mudah untuk mengotomatisasi semuanya.
Dengan kata lain, kita membutuhkan
CATATAN: Jika menulis ini dalam edisi ini terbukti tidak nyaman, kami mungkin ingin menggunakan proyek Wiki untuk membantu kami melanjutkan.
Saat ini kami py2exe dan py2app untuk Windows dan macOS.
Menurut pembicaraan baru - PyInstaller , yang memungkinkan membangun executable yang berdiri sendiri untuk Windows, macOS dan GNU/Linux.
Saya setuju kita pasti harus menggunakan PyInstaller daripada py2exe dan py2app.
Dan saya setuju bahwa kita membutuhkan proses pembuatan yang andal dan otomatis.
Kita juga tidak boleh lupa tentang membangun paket PythonTurtle Python dan mendorongnya ke PyPI saat merilis.
Saya juga menyarankan untuk memicu rilis dengan mendorong tag Git (dengan nomor versi) ke repositori GitHub. Installer kemudian dapat didownload melalui halaman rilis . Saya harap itu semua mungkin dengan cara yang mulus.
Saya setuju, meskipun otomatisasi semacam itu adalah tujuan yang tinggi, jika kita bahkan sampai pada titik di mana kita bisa melakukan rilis, saya akan sangat senang.
jika kita bahkan sampai pada titik di mana kita bisa melakukan rilis, saya akan sangat gembira.
Kemudian siapkan pakaian luar angkasa Anda! :senyum:
Seperti yang diduga, PyInstaller harus dijalankan pada infrastruktur yang harus dibangun penginstalnya (misalnya pada Windows untuk penginstal Windows, pada Mac untuk penginstal macOS).
Saya tidak punya Windows dan Mac. Oleh karena itu, saya perlu melakukan pencarian rumit bagaimana membangun dilakukan di AppVeyor. Selain itu, kami memerlukan macOS dengan Python 3 terinstal (dan semoga dokumentasinya sudah usang dan kami juga dapat membangun dengan Python 3).
Saya mungkin akan memulai dengan mengotomatiskan pembuatan paket Python (dan mengunggahnya ke PyPI secara otomatis). IIUC, setup.py
diperlukan untuk membangun dengan (beberapa fitur) PyInstaller.
Kami akan memiliki satu cara yang mungkin untuk menginstal PythonTurtle dengan cara ini.
Apakah Anda ingin menambahkan saya sebagai pengelola proyek PyPI ? Akan memudahkan saya untuk mengotomatisasi hal-hal ketika saya dapat menggunakan kredensial saya sendiri. Nama pengguna saya adalah "bittner", tidak mengejutkan.
Saya menambahkan Anda sebagai pengelola di PyPI.
Mengenai PyInstaller, saya ingin tahu apakah VM dengan ReactOS akan berfungsi untuk menghasilkan penginstal Windows.
Untuk membuat pip install PythonTurtle
menginstal program dan semua dependensi yang diperlukan terbukti sulit:
Kesimpulan:
install_requires=['wxPython']
ke setup()
, tetapi ini akan gagal kecuali prasyarat ( disebutkan dalam README ) sudah diinstal. Kami mungkin dapat menangkap - kesalahan yang sangat teknis - dan mencetak petunjuk yang berguna jika penginstalan gagal.wx
tidak dapat diimpor ( ModuleNotFoundError
dalam modul aplikasi ).Melakukan salah satu cara "persyaratan deteksi otomatis" yang mudah digunakan menggunakan platform.release()
dan/atau os.name
akan dimungkinkan tetapi juga cukup rumit. Saya sarankan, kita cukup mencetak pesan teks dan merujuk ke bagian instalasi README dengan URL.
Saya ingin tahu apakah VM dengan ReactOS akan berfungsi untuk menghasilkan penginstal Windows.
Saya tidak yakin bagaimana kami akan menggunakan VM pada layanan di cloud yang akan membangun paket PythonTurtle secara otomatis. Bisakah Anda menguraikan? (Apakah Anda bermaksud untuk penggunaan lokal pada mesin pengembang saja?)
Anda benar, saya tidak memikirkan ini matang-matang.
Saya kira ada 2 pertanyaan:
Bisakah ReactOS bekerja untuk menghasilkan penginstal Windows menggunakan PyInstaller?
Bisakah kami mengaturnya agar berfungsi secara otomatis, di cloud?
Katakanlah jawaban untuk pertanyaan pertama adalah ya, dan tidak ada penyedia SaaS yang memberikan layanan itu. Kemudian katakan kita dapat mengatur gambar Docker yang menjalankan VirtualBox dengan tamu ReactOS. Mungkin kita bisa menemukan penyedia SaaS yang akan menjalankan image Docker itu untuk kita?
https://github.com/pypa/python-packaging-user-guide/issues/267 berisi beberapa tautan menarik untuk mengemas aplikasi Python.
Segera setelah pengunggahan bundel Linux ke GitHub diselesaikan (melalui PR #123), kami akan naik kereta CI untuk macOS , ya! :yum:
Hal hebat berikutnya setelah mendapatkan EXE untuk Windows dan bundel untuk macOS yang berfungsi adalah membangun AppImage untuk Linux. Ini adalah sesuatu yang mirip dengan file .dmg di Mac. Ini akan menjadi solusi tunggal untuk semua distro GNU/Linux! :tada: :senyum:
AppImage juga memiliki (agak) AppStore, dijuluki AppImageHub . Dan perbandingan membuat Anda mengerti bahwa itu benar-benar hal yang keren. :+1:
Terdengar bagus untukku!
Sampai sekarang, membangun bundel aplikasi di macOS (menggunakan PyInstaller) tidak sepenuhnya berfungsi. Sebagai alternatif, saya pikir, kita bisa membuat formula Homebrew. Saat ini saya sedang melihat dokumentasi terkait:
Hmmm, sepertinya butuh seseorang dengan Mac untuk mengembangkan formula secara efektif. Meskipun tampaknya tidak sulit, sungguh. :pemikiran:
Berikut adalah rumus yang terkait dengan Python (3):
Mungkin cukup untuk bergantung pada Python@3
(=3.7) dan menginstal wxPython melalui pip ( seperti dalam pengujian kami ).
Sekedar referensi, jika rilis otomatis tidak berfungsi (mungkin saat ini tidak berfungsi karena api_key:
disetel hanya ke proyek VSCodium melakukan rilis otomatis di GitHub. :+1:
Ram, Anda telah menyebutkan "Pemasang Windows" menjadi prioritas utama saat ini. Saya setuju.
Mari kita catat keadaan serikat saat ini.
Saya pikir, saya sudah mempersiapkan segalanya. Sekarang, karena saya tidak memiliki komputer Windows atau saya berencana untuk membelinya (omong-omong, sama untuk macOS), satu-satunya hal yang hilang adalah seseorang yang mengambil alih dan meletakkan potongan puzzle yang hilang pada tempatnya. Dari firasat saya, kami sangat, sangat dekat dengan "tugas selesai".
Sepertinya, yang harus Anda lakukan adalah membuat konfigurasi yang diperlukan dengan ekstensi Microsoft Visual Studio Installer Projects , menurut jawaban di StackOverflow .
Oleh karena itu, dapatkah Anda mengambil alih? Yang perlu dilakukan, IIUC, adalah:
.vdproj
ke proyek iniAppVeyor kemudian akan mendeteksi file itu, membangun penginstal dan menyediakannya untuk diunduh di halaman Artefak build.
Dari firasat saya, kami sangat, sangat dekat dengan "tugas selesai".
Saya tidak merasa bahwa jika saya akan mulai mengerjakannya, itu akan hampir selesai. Saya bahkan tidak tahu bagaimana menggunakan Visual Studio Project, atau apa rencana kami saat ini. Jika saya mengambil tugas ini, saya kira itu akan memakan waktu beberapa hari kerja penuh waktu.
Anda telah berusaha keras dalam hal ini, jadi saya merasa tidak enak untuk mengatakan ini kepada Anda, tetapi saya pasti tidak akan secara sukarela menangani masalah ini. PythonTurtle hampir tidak menjadi prioritas dalam hidup saya sekarang karena saya akan menghabiskan lebih dari satu jam, puncak, untuk meningkatkannya.
Apakah saya mengganggu dengan menunjuk masalah ini dari masalah lain, mengatakan tidak ada yang berharga tanpa masalah ini? Saya tidak akan menghentikan Anda dari mengerjakan masalah lain, saya mungkin tidak akan bergabung karena upaya itu tampaknya sia-sia bagi saya, tetapi saya tidak akan memblokir Anda, dan jika Anda membutuhkan saya untuk ulasan kode atau hal-hal kecil, Saya akan senang melakukannya.
Memiliki pemikiran lain dalam hal ini. Anda mengatakan "Saya tidak memiliki komputer Windows atau saya berencana untuk membelinya". Jika keberatan Anda untuk melakukan item yang Anda daftarkan adalah karena Anda telah melakukan cukup banyak pada tiket ini, atau Anda memilih untuk tidak menghabiskan waktu Anda melakukan hal-hal yang berhubungan dengan Windows, maka ya, itu adalah keberatan yang wajar.
Jika masalahnya adalah Anda tidak ingin mengeluarkan uang untuk lisensi Windows, maka mungkin itu bisa dipecahkan. Satu ide adalah menggunakan ReactOS, dan melihat apakah itu menjalankan Visual Studio Project. Jika ReactOS bukan pilihan, maka mungkin saya bisa mendapatkan lisensi/mesin Windows untuk Anda. Beri tahu saya jika itu membantu.
Beri tahu saya jika itu membantu.
Apakah Anda mengenal seseorang yang _antusias_ tentang pemrograman di Windows? Windows adalah lingkungan yang berantakan untuk Python. Saya tidak ingin berkontribusi pada citra palsu "Python + Windows" yang cocok satu sama lain, itu saja.
Lihat https://github.com/PythonTurtle/PythonTurtle/issues/108#issuecomment -683420022 untuk solusi alternatif untuk membangun penginstal MSI (WiX, WiX.Py ). Kami mungkin berhasil dengan cara itu dalam kombinasi dengan Tindakan GitHub. Apakah seseorang ingin mencobanya?
Apakah seseorang ingin mencobanya?
Saya tidak, jadi saya kira kita akan menunggu sampai kemungkinan sukarelawan tiba.
Sebuah daftar tugas...
Beberapa petunjuk untuk membantu Anda membuat kemajuan:
python3 setup.py clean bundle
Anda dapat membuat semua bundel biner (digunakan PyInstaller).master
; kami mungkin ingin menggunakan sesuatu seperti actions/create-release untuk membuat ini tidak terlalu melelahkan bagi kami.Kami menerima jawaban yang sangat bagus oleh @judej pada permintaan Komunitas Pengembang Microsoft
Intinya: Tidak ada sukarelawan MSI untuk kami, tetapi ada dua proyek yang lebih menarik, satu yang membuat penginstal dan yang lain membuat Aplikasi Python ZIP :
Itu bisa menjadi dua alternatif bagus yang layak dievaluasi. Terima kasih Yudas! :100: :medal_militer:
Dingin. Saya juga baru-baru ini mendengar tentang PyOxidizer . Saya masih belum 100% yakin saya memahami proyek ( diskusi ) tetapi mungkin saja itu melakukan apa yang kita inginkan.
Saya akan mencoba melakukan ini dengan shiv
selama akhir pekan. Silakan coba PyOxidizer
dan kemudian kita dapat membandingkan catatan.
Maaf, saya memulai pekerjaan baru beberapa hari yang lalu dan saya tidak punya waktu untuk melakukan apa pun :(
PyOxidizer
terdengar seperti eksperimen bagi saya: Aplikasi Python berjalan di "a Rust VM", lapisan asli OS yang dibuat menggunakan Rust. Saya tidak yakin manfaat apa yang diberikan ini. Bukankah setup PyInstaller
kita jalankan melakukan semuanya dengan baik? :3rd_place_medal:
shiv
adalah pendekatan yang benar-benar baru (baru dalam "portofolio" artefak rilis kami), yang mungkin menarik untuk diberikan kepada audiens kami. Saya menemukan ide itu mendebarkan (walaupun saya berani bertaruh hanya sedikit orang yang akan menggunakannya). :2nd_place_medal:
pynsist
terdengar seperti penginstal Microsoft Windows yang kami cari. Ini mungkin memberikan pengalaman pengguna yang tampaknya diharapkan oleh orang-orang Windows: :satu: Unduh penginstal, :dua: jalankan untuk menginstal dan tambahkan entri menu mulai, :tiga: mulai aplikasi dari menu mulai. :1st_place_medal:
Kelemahan dari pynsist adalah Windows saja. Saya akan mencoba untuk memajukan Shiv (dari LinkedIn) di Mac dan Linux.
Komentar yang paling membantu
Hal hebat berikutnya setelah mendapatkan EXE untuk Windows dan bundel untuk macOS yang berfungsi adalah membangun AppImage untuk Linux. Ini adalah sesuatu yang mirip dengan file .dmg di Mac. Ini akan menjadi solusi tunggal untuk semua distro GNU/Linux! :tada: :senyum:
AppImage juga memiliki (agak) AppStore, dijuluki AppImageHub . Dan perbandingan membuat Anda mengerti bahwa itu benar-benar hal yang keren. :+1: