Cara mengemas aplikasi Python dengan BeeWare Briefcase

Python gagal di beberapa area. Misalnya, Python bukanlah bahasa tercepat, tetapi pustaka pihak ketiga seperti NumPy memungkinkan Anda mengatasinya. Di mana Python paling kekurangan, adalah pengemasan. Artinya, Python tidak memiliki mekanisme internal yang konsisten untuk menghasilkan biner mandiri dari aplikasi. Pergi dan Rust lakukan ini. Mengapa Python tidak bisa?

Ini sebagian besar karena Python tidak memiliki budaya kasus penggunaan seperti itu sampai baru-baru ini dalam sejarahnya. Jadi, baru-baru ini saja modul pihak ketiga mulai muncul yang memungkinkan aplikasi Python untuk dikemas sebagai binari mandiri. PyInstaller - yang saya bahas sebelumnya - adalah salah satu aplikasi tersebut. Dalam artikel ini kita akan melihat utilitas yang lebih elegan dan kuat untuk pengemasan aplikasi Python, BeeWare's Briefcase.

[Juga di: Python virtualenv dan venv lakukan dan tidak boleh dilakukan]

Namun, ada dua hal yang perlu diperhatikan tentang Tas Kerja. Pertama, Tas kantor tidak melakukan pengemasan lintas platform; Anda perlu membangun di atas platform yang Anda terapkan. Kedua, Briefcase berfungsi paling baik dengan aplikasi yang menggunakan toolkit GUI. Kami akan membahas secara detail tentang masalah ini di bawah.

Apa itu BeeWare Briefcase?

Tas kerja adalah bagian dari rangkaian alat umum oleh BeeWare untuk membuat aplikasi, dengan bagian yang berbeda saling melengkapi. Misalnya, BeeWare's Kivy memungkinkan Anda membuat aplikasi GUI lintas platform dengan Python yang berjalan tidak hanya di semua platform OS utama tetapi juga di web. Tapi di sini kita akan fokus pada Tas Kerja, yang dapat digunakan dengan atau tanpa alat lain.

Tas kerja mengemas aplikasi untuk semua OS yang didukungnya dengan format umum untuk aplikasi pada platform itu:

  • Microsoft Windows (penginstal MSI)
  • macOS ( .app format file)
  • Linux (AppImage)
  • iOS (proyek Xcode)
  • Android (proyek Gradle)

Untuk menerapkan di iOS atau Android, Anda memerlukan kit pengembangan untuk platform tersebut.

Satu hal yang tidak  didukung oleh Briefcase  adalah penerapan lintas platform. Misalnya, jika Anda pengguna Windows, Anda tidak dapat membuat aplikasi macOS; Anda memerlukan macOS untuk melakukannya. Bundler aplikasi lain untuk Python juga dibatasi, jadi pembatasan ini sama sekali tidak eksklusif untuk Tas Kerja.

Tas kerja juga bukan "kompiler" - itu tidak mengubah program Python menjadi kode mesin asli yang setara. Aplikasi Anda tidak akan berjalan lebih cepat saat digunakan sebagai aplikasi Tas kantor daripada biasanya.

Pengaturan proyek tas kerja

Tas kerja mengharuskan Anda menyiapkan direktori proyek khusus dengan lingkungan virtualnya sendiri. Jika Anda belum terbiasa dengan “venvs”, sebutan untuk lingkungan virtual Python, ada baiknya untuk mempercepatnya, karena pengembangan Python yang canggih berputar di sekitarnya.

Setelah Anda menyiapkan venv dan  pip install briefcase masuk ke dalamnya, Anda akan menggunakan perkakas baris perintah Briefcase sendiri untuk menyiapkan, mengelola, dan mengirimkan proyek yang dikemas dalam Briefcase. Ini mirip dengan cara alat seperti Puisi bekerja: Sebagian besar interaksi tingkat tinggi Anda dengan proyek dilakukan melalui alat tersebut, jadi Anda tidak perlu membuat file atau mengedit konfigurasi secara manual.

Untuk memulai proyek Briefcase baru, buka CLI di direktori proyek Anda, aktifkan lingkungan virtual (dengan asumsi Anda tidak menggunakan CLI IDE untuk melakukannya secara otomatis), dan ketik  briefcase new. Ini membuat perancah di direktori proyek Anda untuk proyek Tas Kerja.

Anda harus menjawab beberapa pertanyaan tentang proyek pada awalnya, dan untuk sebagian besar dari mereka Anda cukup menekan  Enter untuk menerima default. Tetapi salah satu pertanyaan yang akan Anda tanyakan - yang terakhir, sebenarnya - sangat penting: pilihan kerangka GUI yang akan digunakan.

Salah satu penawaran BeeWare lainnya adalah toolkit UI yang disebut Toga, untuk membuat GUI dalam program Python menggunakan komponen UI asli platform. Jika Anda ingin terjun mempelajari Toga sambil juga bekerja dengan Koper, tidak ada yang menghentikan Anda. Atau Anda dapat memilih "Tidak Ada" dan membuat aplikasi "tanpa kepala" yang berjalan dari baris perintah, atau Anda dapat menggunakan toolkit UI pihak ketiga atau sistem jendela seperti Pyglet atau PyQT.

Perhatikan bahwa jika Anda tidak memasang perangkat UI, aplikasi tidak akan memiliki interaktivitas konsol apa pun - yaitu, aplikasi tidak akan membuka jendela konsol dan tidak akan mencetak apa pun ke konsol. Ini berguna jika Anda menerapkan program yang tidak memerlukan interaksi konsol - misalnya, jika dijalankan sebagai server web lokal dan menggunakan browser web untuk interaksi. Tetapi belum ada pilihan untuk mengizinkan program Briefcase tanpa paket UI yang diinstal untuk dijalankan dengan konsol.

Struktur proyek tas kerja

Direktori aplikasi Briefcase yang baru dimulai dilengkapi dengan beberapa file yang sudah diinstal sebelumnya:

  • Tingkat teratas direktori aplikasi berisi lisensi proyek,  pyproject.toml file, contoh file README dalam format Teks Terstruktur, dan  .gitignore file yang telah disesuaikan sebelumnya dengan direktori umum untuk dihilangkan dari repositori Git apa pun yang dibuat untuk proyek tersebut.
  • The  src direktori berisi kode sumber dari aplikasi Anda, dengan dua subdirektori: salah satu yang berisi aplikasi (memiliki nama yang sama dengan direktori proyek Anda) dan salah satu yang berisi metadata aplikasi.
  • Direktori aplikasi berisi  resources direktori, yang digunakan untuk menyimpan sumber daya seperti ikon aplikasi.

Perintah proyek tas kerja

The  briefcase Perintah adalah bagaimana Anda melakukan sebagian besar interaksi Anda dengan proyek Briefcase. Kami membahas  new perintah di atas, yang digunakan untuk menyiapkan proyek Tas Kerja di folder tertentu. Tapi Anda biasanya perlu menggunakan banyak perintah lain selama siklus hidup aplikasi Tas, dan beberapa di antaranya bisa sedikit berlawanan dengan intuisi.

Berikut adalah perintah Koper paling umum yang akan Anda gunakan:

  • dev: Saat Anda berada di dalam direktori aplikasi, perintah ini menjalankan aplikasi tersebut dalam  mode pengembang . Mode pengembang memungkinkan Anda menjalankan aplikasi dengan pustaka terinstal lengkap, tetapi tanpa perlu dikemas secara resmi untuk pengiriman. Sering kali, saat mengembangkan aplikasi, Anda akan menguji-coba dengan mode pengembang. Jika ada dependensi yang berubah sejak terakhir kali Anda menjalankan  dev, gunakan  -d flag untuk memperbaruinya.
  • build: Membuat salinan aplikasi dalam bentuk yang diperlukan untuk memaketkannya untuk distribusi. Ini berbeda  dev dengan yang Anda dapat membangun untuk platform yang berbeda jika perancah dipasang.
  • update: Memperbarui aplikasi yang dibangun. Ini adalah cara cepat untuk memastikan build aplikasi Anda memiliki kode terbaru, daripada menggunakan  build, yang membuat lebih banyak file lagi. Teruskan  -d tanda untuk mengupdate dependensi, dan  -rtanda untuk mengupdate resource (yaitu, untuk menyalin resource dari versi dev aplikasi Anda ke versi build).
  • run: Menjalankan aplikasi versi built-in. Ini pada dasarnya mensimulasikan menjalankan versi aplikasi yang dikemas dan diterapkan. Teruskan  -u bendera untuk memperbarui kode apa pun sebelum dijalankan.
  • package: Membuat paket penginstal aplikasi dari versi aplikasi yang dibuat. Hasil akhirnya adalah artefak yang dapat Anda berikan kepada orang lain untuk menginstal program Anda - misalnya, .MSI pada Windows.

Berikut beberapa perintah Briefcase yang jarang digunakan: 

  • create: Jangan bingung dengan  newcreate membuat perancah untuk penginstal aplikasi - cara untuk membangun penginstal aplikasi untuk platform tertentu. Saat Anda menyiapkan aplikasi new, aplikasi  tersebut dilengkapi dengan perancah untuk platform yang sedang Anda kerjakan; create memungkinkan Anda menambahkan perancah untuk platform lain jika diperlukan. 
  • upgrade: Mengupgrade komponen yang digunakan untuk mengemas aplikasi, seperti kerangka kerja Wix.
  • publish: Menerbitkan aplikasi yang dikemas ke saluran publikasi seperti App Store. (Saat artikel ini ditulis, fitur ini belum berfungsi.)

Singkatnya, ini adalah urutan di mana Anda akan menggunakan perintah Briefcase dalam siklus hidup aplikasi yang khas:

  • new untuk membuat aplikasi
  • dev untuk menjalankan aplikasi saat Anda mengerjakannya
  • build untuk membuat versi aplikasi yang akan dikemas untuk distribusi
  • run untuk menguji-coba versi paket aplikasi
  • update untuk menjaga versi paket aplikasi tetap mutakhir dengan perubahan kode
  • package untuk menerapkan versi paket aplikasi dengan pemasang

Pembuatan aplikasi tas kerja

Membuat program Python sebagai aplikasi Briefcase hampir sama dengan membuat aplikasi Python lainnya. Masalah utama melibatkan struktur proyek. Titik masuk  __main__.py aplikasi ada di direktori aplikasi, yang memuat  app.py dari direktori yang sama dan dijalankan  main(). Saat Anda menginisialisasi sebuah proyek, proyek tersebut akan diisi dengan versi placeholder dari beberapa file proyek, yang dapat Anda buat atau ganti sesuai kebutuhan.

Jika Anda mengubah   proyek yang sudah ada untuk menggunakan Briefcase, pastikan Anda menyusunnya sedemikian rupa sehingga titik masuknya sesuai dengan yang diharapkan Briefcase. Misalnya, jika Anda tidak menyimpan kode di  src direktori, Anda harus memindahkan kode Anda  src dan memperbaiki ketidaksesuaian di jalur dan struktur direktorinya.

Hal lain yang perlu diingat adalah cara menangani dependensi pihak ketiga. The  pyproject.toml file dalam kontrol direktori proyek Anda yang dependensi untuk menambah proyek. Jika proyek Anda diberi nama  myproject, maka  pyproject.toml akan berisi bagian bernama  [tool.briefcase.app.myproject], dengan  requires baris yang mencantumkan setiap persyaratan seperti yang ditentukan dalam  requirements.txt file. Jika proyek Anda membutuhkan, misalnya,  regex dan  black, Anda akan menyetel baris itu ke  requires = ["regex","black"]. Anda kemudian akan menggunakan  briefcase dev -d untuk memperbarui dependensi untuk versi pengembangan proyek, dan  briefcase update -d untuk memperbarui dependensi dalam versi paket.

Pengemasan dan pengiriman aplikasi tas kerja

Setelah Anda menjalankan  briefcase package, Anda akan melihat redistributable untuk program Anda muncul di subdirektori dari direktori proyek yang sesuai dengan platform yang Anda buat. Untuk Microsoft Windows, misalnya, direktori akan menjadi  windows, dan dapat didistribusikan ulang akan menjadi  .msi file dengan nama yang sama dengan proyek Anda. Untuk Android dan iOS, hasilnya adalah project untuk Gradle dan Xcode, masing-masing, dan ini perlu dikompilasi menggunakan fitur tersebut agar dapat diterapkan ke platform tersebut.

Bagaimana melakukan lebih banyak hal dengan Python

  • Cara menjalankan anaconda berdampingan dengan ular piton lainnya
  • Cara menggunakan dataclass Python
  • Mulailah dengan async dengan Python
  • Cara menggunakan asyncio dengan Python
  • 3 langkah untuk perbaikan asinkron Python
  • Cara menggunakan PyInstaller untuk membuat file executable Python
  • Tutorial Cython: Cara mempercepat Python
  • Cara menginstal Python dengan cara cerdas
  • Bagaimana mengelola proyek Python dengan Puisi
  • Cara mengelola proyek Python dengan Pipenv
  • Virtualenv dan venv: Penjelasan lingkungan virtual Python
  • Python virtualenv dan venv lakukan dan tidak boleh dilakukan
  • Penjelasan threading dan subproses Python
  • Cara menggunakan debugger Python
  • Cara menggunakan timeit untuk membuat profil kode Python
  • Cara menggunakan cProfile untuk membuat profil kode Python
  • Cara mengonversi Python ke JavaScript (dan kembali lagi)