Misalkan saya memiliki fungsi python yang berguna atau kelas (atau apa pun) yang disebut useful_thing
yang ada dalam satu file. Ada dua cara penting untuk mengatur pohon sumber. Cara pertama menggunakan modul tunggal:
- setup.py
- README.rst
- ...etc...
- foo.py
di mana useful_thing
didefinisikan dalam foo.py
. Strategi kedua adalah membuat paket:
- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py
di mana useful_thing
didefinisikan dalam module.py
. Dalam kemasan kasus __init__.py
akan terlihat seperti ini
from foo.module import useful_thing
sehingga dalam kedua kasus bisa Anda lakukan from foo import useful_thing
.
Pertanyaan: Cara mana yang lebih disukai, dan mengapa?
SUNTING: Karena pengguna nyamuk mengatakan pertanyaan ini tidak terbentuk dengan baik, saya akan menambahkan bahwa tutorial pengemasan python resmi sepertinya tidak mengomentari metode mana yang diuraikan di atas yang lebih disukai. Saya secara eksplisit tidak memberikan daftar pro dan kontra pribadi saya karena saya tertarik pada apakah ada metode yang disukai komunitas, tidak menghasilkan diskusi tentang pro / kontra :)
sumber
Jawaban:
Anda melakukan hal paling sederhana yang bekerja untuk Anda .
Untuk modul satu fungsi , sama sekali tidak ada gunanya membuat paket. Paket berguna untuk membuat namespace tambahan dan / atau untuk mengatur kode Anda di beberapa modul.
The
json
danunittest
modul dalam Python perpustakaan standar benar-benar paket misalnya, untuk tujuan kode organisasi. Tetapi sangat baik untuk meninggalkan kode yang saat ini hidup hanya dalam satu file python, sebagai satu modul.Jika Anda ingin contoh:
six
adalah distribusi hanya satu modulsetuptools_subversion
,formatflowed
,rtfunicode
.Untuk contoh proyek yang baik yang benar-benar memanfaatkan paket, lihat:
requests
Tidak ada rekomendasi 'resmi'; kedua opsi sepenuhnya valid.
sumber