Apa itu telur Python?

532

Saya baru mengenal Python dan saya hanya mencoba memahami cara kerja paketnya. Agaknya "telur" adalah semacam mekanisme pengemasan, tetapi apa yang akan menjadi gambaran singkat tentang peran apa yang mereka mainkan dan mungkin beberapa informasi tentang mengapa mereka berguna dan bagaimana cara membuatnya?

Bialecki
sumber

Jawaban:

527

Catatan: Kemasan telur telah digantikan oleh kemasan Roda.

Konsep yang sama sebagai .jarfile di Jawa, itu adalah .zipfile dengan beberapa file metadata diganti namanya .egg, untuk mendistribusikan kode sebagai bundel.

Khususnya: Struktur Internal Telur Python

"Telur Python" adalah struktur logis yang mewujudkan rilis versi tertentu dari proyek Python, yang terdiri dari kode, sumber daya, dan metadata-nya. Ada beberapa format yang dapat digunakan untuk secara fisik menyandikan telur Python, dan lainnya dapat dikembangkan. Namun, prinsip utama telur Python adalah bahwa mereka harus dapat ditemukan dan diimpor. Artinya, aplikasi Python seharusnya dapat dengan mudah dan efisien menemukan telur apa yang ada pada suatu sistem, dan untuk memastikan bahwa isi telur yang diinginkan dapat diimpor.

The .eggformat cocok untuk distribusi dan instalasi mudah atau upgrade kode, karena proyek ini pada dasarnya mandiri dalam satu direktori atau file, unmingled dengan kode proyek-proyek lain atau sumber daya. Hal ini juga memungkinkan untuk menginstal beberapa versi proyek secara bersamaan, sehingga masing-masing program dapat memilih versi yang ingin mereka gunakan.

jefe2000
sumber
82

The .eggfile format distribusi paket Python. Itu hanya sebuah alternatif untuk distribusi kode sumber atau Windows exe. Tetapi perhatikan bahwa murni Python, .eggfile ini sepenuhnya lintas platform.

The .eggfile itu sendiri pada dasarnya adalah sebuah .zipfile yang. Jika Anda mengubah ekstensi ke " zip", Anda dapat melihat bahwa itu akan memiliki folder di dalam arsip.

Juga, jika Anda memiliki .eggfile, Anda dapat menginstalnya sebagai paket menggunakaneasy_install

Contoh: Untuk membuat .eggfile untuk direktori yang mengatakan mymathdirinya memiliki beberapa skrip python, lakukan langkah berikut:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

Kemudian, dari terminal lakukan:

 $ python setup.py bdist_egg

Ini akan menghasilkan banyak output, tetapi ketika selesai Anda akan melihat bahwa Anda memiliki tiga folder baru: build , dist , dan mymath.egg-info . Satu-satunya folder yang kami pedulikan adalah folder dist tempat Anda akan menemukan .eggfile Anda , mymath-0.1-py3.5.eggdengan nomor versi python (instalasi) default Anda (milik saya di sini: 3.5)

Sumber: Blog perpustakaan Python

kmario23
sumber
3

Telur Python adalah cara menggabungkan informasi tambahan dengan proyek Python, yang memungkinkan dependensi proyek untuk diperiksa dan dipenuhi pada saat runtime, serta memungkinkan proyek untuk menyediakan plugin untuk proyek lain. Ada beberapa format biner yang mengandung telur, tetapi yang paling umum adalah format zipfile '.egg', karena ini adalah format yang nyaman untuk mendistribusikan proyek. Semua format mendukung termasuk data khusus paket, metadata proyek, ekstensi C, dan kode Python.

Cara termudah untuk menginstal dan menggunakan telur Python adalah dengan menggunakan manajer paket Python "Easy Install", yang akan menemukan, mengunduh, membuat, dan menginstal telur untuk Anda; yang Anda lakukan hanyalah memberi tahu nama (dan opsional, versi) proyek Python yang ingin Anda gunakan.

Telur Python dapat digunakan dengan Python 2.3 dan lebih tinggi, dan dapat dibangun menggunakan paket setuptools (lihat kotak pasir Python Subversion untuk kode sumber, atau halaman EasyInstall untuk petunjuk pemasangan saat ini).

Manfaat utama Telur Python adalah:

  • Mereka mengaktifkan alat-alat seperti manajer paket Python "Instalasi Mudah"

  • File .egg adalah format "nol instalasi" untuk paket Python; tidak diperlukan langkah membangun atau menginstal, cukup letakkan di PYTHONPATH atau sys.path dan gunakan (mungkin memerlukan runtime yang diinstal jika ekstensi C atau file data digunakan)

  • Mereka dapat menyertakan paket metadata, seperti telur lain yang mereka andalkan

  • Mereka mengizinkan "paket namespace" (paket yang hanya berisi paket lain) untuk dipecah menjadi distribusi terpisah (mis. Zope. , Twisted. , Peak. * Paket dapat didistribusikan sebagai telur terpisah, tidak seperti paket normal yang harus selalu ditempatkan di bawah yang sama direktori induk. Ini memungkinkan apa yang sekarang paket monolitik besar untuk didistribusikan sebagai komponen terpisah.)

  • Mereka memungkinkan aplikasi atau pustaka untuk menentukan versi pustaka yang diperlukan, sehingga Anda dapat mis memerlukan ("Twisted-Internet> = 2.0") sebelum melakukan impor twisted.internet.

  • Mereka adalah format yang hebat untuk mendistribusikan ekstensi atau plugin ke aplikasi dan kerangka kerja yang dapat dikembangkan (seperti Trac, yang menggunakan telur untuk plugin pada 0,9b1), karena runtime telur menyediakan API sederhana untuk menemukan telur dan menemukan titik masuk mereka yang diiklankan (mirip untuk konsep "titik ekstensi" Eclipse).

Ada juga manfaat lain yang mungkin datang dari memiliki format standar, mirip dengan manfaat format "jar" Java.

prosti
sumber
Apakah telur python merupakan versi spesifik? yaitu telur yang dibangun untuk 2 vs 3? atau bahkan versi minor? ex 2.x
ealeon
1

"Egg" adalah format distribusi impor file tunggal untuk proyek yang berhubungan dengan Python.

"Panduan Cepat untuk Telur Python" mencatat bahwa "Telur adalah untuk Piton seperti Stoples ke Jawa ..."

Telur sebenarnya lebih kaya daripada stoples; mereka memiliki metadata yang menarik seperti detail lisensi, rilis rilis, dll.

Aerin
sumber
Tautannya sudah mati hari ini.
Perfi
@Perfi Link bekerja untuk saya.
Klik
Lucu cara kerjanya kadang-kadang! Sudah kembali online. Senang melihatnya :)
Perfi