Bagaimana cara mengemas aplikasi python agar dapat diinstal pip?

95

Saya menulis aplikasi django di waktu senggang saya untuk kompetisi footy-tipping yang sedang kami jalankan di tempat kerja. Saya pikir saya akan menggunakan waktu ini dengan bijak, dan mempercepat virtualenv, pip, pengemasan, django 1.3, dan cara menulis aplikasi yang dapat didistribusikan ulang dengan mudah. Sejauh ini baik.

Saya sampai ke bagian pengemasan. Banyak aplikasi django di GitHub misalnya sebagian besar digabungkan (kira-kira) dengan cara yang sama. Saya akan menggunakan django-uni-forms sebagai contoh.

Asumsi yang saya buat adalah bahwa MANIFEST.indan setup.pymerupakan satu-satunya bagian yang dibutuhkan pip untuk melakukan tugasnya. Apakah itu benar? Komponen lain apa yang diperlukan jika asumsi saya salah?

Apakah file pengemasan yang diperlukan biasanya dibuat, atau dibuat dengan tangan? Dapatkah dependensi dijelaskan dan kemudian diinstal juga? Aplikasi saya bergantung pada django-uni-forms, dan saya telah mencantumkannya dalam sebuah requirements.txtfile dalam aplikasi saya yang saya gunakan untuk menginstal ketergantungan; tetapi apakah itu sesuatu yang dapat ditangani oleh sistem pengemasan?

Apa langkah-langkah yang harus saya ikuti untuk mengemas aplikasi saya sedemikian rupa sehingga pip dapat menginstalnya dan semua dependensinya?

Josh Smeaton
sumber

Jawaban:

88

Ya, MANIFEST.indan setup.pyseharusnya cukup.

Entri blog ini benar-benar memiliki beberapa informasi bagus tentang topik ini: Mengemas apl Django yang dapat digunakan kembali

Dan inilah ikhtisar bagus dan mendetail lainnya yang banyak membantu saya: Panduan Pengguna Pengemasan Python

Terutama tip untuk memasukkan file statis (template) Anda adalah penting karena ini mungkin tidak terlihat jelas pada awalnya.

Dan ya, Anda dapat menentukan paket yang diperlukan setup.pyyang secara otomatis diambil saat memasang aplikasi Anda.

Sebagai contoh:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

Jelas sekarang kami memiliki dua tempat di mana dependensi ditentukan, tetapi itu tidak berarti bahwa informasi ini digandakan: setup.py vs requirement.txt

Dengan pengaturan ini, paket Anda harus dapat diinstal melalui pip.


Seperti yang dicatat Pierre dalam komentar, sekarang ada juga bagian yang relevan dalam dokumentasi resmi Django: Mengemas aplikasi Anda

Dan kemudian ada panduan "benar-benar tidak lengkap", yang benar-benar memberikan gambaran umum yang bagus tentang pengemasan dan mengunggah paket ke PyPI: Berbagi Karya Kasih Anda: PyPI Cepat Dan Kotor

arie
sumber
4
Juga sekarang ada bagian yang menjelaskan Bagaimana memaketkan aplikasi Django di dokumen resmi
Pierre de LESPINAY