Format distribusi biner () awalnya didefinisikan dalam PEP 427. Versi spesifikasi saat ini ada di sini Show
AbstrakPEP ini menjelaskan format paket bawaan untuk Python yang disebut "roda" Roda adalah arsip format ZIP dengan nama file yang diformat khusus dan ekstensi Penerimaan PEPPEP ini diterima, dan versi roda yang ditentukan diperbarui ke 1. 0, oleh Nick Coghlan pada 16 Februari 2013 AlasanPython membutuhkan format paket yang lebih mudah dipasang daripada sdist. Paket sdist Python ditentukan oleh dan membutuhkan sistem build distutils dan setuptools, menjalankan kode sewenang-wenang untuk membangun dan menginstal, dan mengkompilasi ulang, kode agar dapat diinstal ke virtualenv baru. Sistem penggabungan build-install ini lambat, sulit dipelihara, dan menghambat inovasi baik dalam sistem build maupun installer Wheel mencoba memperbaiki masalah ini dengan menyediakan antarmuka yang lebih sederhana antara sistem build dan penginstal. Format paket wheel binary membebaskan penginstal dari keharusan mengetahui sistem build, menghemat waktu dengan mengamortisasi waktu kompilasi pada banyak penginstalan, dan menghilangkan kebutuhan untuk menginstal sistem build di lingkungan target DetailMemasang roda 'distribusi-1. 0-py32-none-any. apaPemasangan roda konon terdiri dari dua tahap
Fitur penginstal yang direkomendasikanTulis ulangdistribution-1.0.dist-info/ distribution-1.0.data/_3 Di roda, skrip dikemas dalam distribution-1.0.dist-info/ distribution-1.0.data/7. Jika baris pertama file di distribution-1.0.dist-info/ distribution-1.0.data/8 dimulai dengan persis distribution-1.0.dist-info/ distribution-1.0.data/9, tulis ulang untuk menunjuk ke juru bahasa yang benar. Penginstal Unix mungkin perlu menambahkan +x bit ke file ini jika arsip dibuat di Windows Konvensi file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,0 diizinkan. file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,_0 menunjukkan skrip GUI alih-alih skrip konsolHasilkan pembungkus skrip Di roda, skrip yang dikemas pada sistem Unix pasti tidak akan menyertai. pembungkus exe. Penginstal Windows mungkin ingin menambahkannya selama penginstalan Fitur pengarsipan yang direkomendasikanTempatkanfile.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,_2 di akhir arsip Pengarsip didorong untuk menempatkan file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,2 file secara fisik di akhir arsip. Ini memungkinkan beberapa trik ZIP yang berpotensi menarik termasuk kemampuan untuk mengubah metadata tanpa menulis ulang seluruh arsip Format FileKonvensi nama fileNama file roda adalah file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,_4distribusi Nama distribusi, e. g. 'django', 'piramida' Versi: kapanVersi distribusi, e. g. 1. 0 membangun tagNomor build opsional. Harus dimulai dengan angka. Bertindak sebagai pemecah ikatan jika nama file dua roda sama dalam semua hal lainnya (mis. e. nama, versi, dan tag lainnya). Urutkan sebagai tupel kosong jika tidak ditentukan, selain itu urutkan sebagai tupel dua item dengan item pertama sebagai digit awal sebagai file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,5, dan item kedua sebagai sisa tag sebagai file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,6implementasi bahasa dan tag versi E. g. 'py27', 'py2', 'py3' tag abiE. g. 'cp33m', 'abi3', 'tidak ada' tag platformE. g. 'linux_x86_64', 'apa saja' Misalnya, file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,_7 adalah build pertama dari paket yang disebut 'distribusi', dan kompatibel dengan Python 2. 7 (Python 2. 7 implementasi), tanpa ABI (Python murni), pada arsitektur CPU apa pun Tiga komponen terakhir dari nama file sebelum ekstensi disebut “tag kompatibilitas. ” Tag kompatibilitas mengungkapkan persyaratan juru bahasa dasar paket dan dirinci dalam PEP 425 Melarikan diri dan UnicodeKarena komponen nama file dipisahkan oleh tanda hubung ( file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,8, HYPHEN-MINUS), karakter ini tidak dapat muncul di dalam komponen mana pun. Ini ditangani sebagai berikut
Alat yang memproduksi roda harus memverifikasi bahwa komponen nama file tidak mengandung file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,8, karena file yang dihasilkan mungkin tidak diproses dengan benar jika mengandung Nama file arsip adalah Unicode. Perlu beberapa saat sebelum alat diperbarui untuk mendukung nama file non-ASCII, tetapi didukung dalam spesifikasi ini Nama file di dalam arsip dikodekan sebagai UTF-8. Meskipun beberapa klien ZIP yang umum digunakan tidak menampilkan nama file UTF-8 dengan benar, penyandian didukung oleh spesifikasi ZIP dan { "hash": "sha256=ADD-r2urObZHcxBW3Cr-vDCu5RJwT4CaRTHiFmbcIYY" }7 Python isi berkasIsi file roda, di mana {distribution} diganti dengan nama paket, mis. g. { "hash": "sha256=ADD-r2urObZHcxBW3Cr-vDCu5RJwT4CaRTHiFmbcIYY" }_8 dan {version} diganti dengan versinya, mis. g. { "hash": "sha256=ADD-r2urObZHcxBW3Cr-vDCu5RJwT4CaRTHiFmbcIYY" }_9, terdiri dari
Versi spesifikasi wheel ini didasarkan pada skema instalasi distutils dan tidak menentukan cara menginstal file ke lokasi lain. Tata letak menawarkan superset dari fungsionalitas yang disediakan oleh format wininst dan egg binary yang ada Itu. direktori dist-info
Itu. direktori dataFile apa pun yang biasanya tidak diinstal di dalam paket situs masuk ke. direktori data, dinamakan sebagai. direktori dist-info tetapi dengan. data/ ekstensi distribution-1.0.dist-info/ distribution-1.0.data/ Itu. direktori data berisi subdirektori dengan skrip, header, dokumentasi dan sebagainya dari distribusi. Selama penginstalan, konten subdirektori ini dipindahkan ke jalur tujuannya File roda yang ditandatanganiFile roda menyertakan RECORD tambahan yang memungkinkan tanda tangan digital. RECORD PEP 376 diubah untuk menyertakan hash aman file.py,sha256=AVTFPZpEKzuHr7OvQZmhaU3LvwKz06AJw8mT\_pNh2yI,3144 distribution-1.0.dist-info/RECORD,,_ File tanda tangan RECORD. jws dan REKOR. p7s sama sekali tidak disebutkan dalam RECORD karena hanya dapat ditambahkan setelah RECORD dibuat. Setiap file lain dalam arsip harus memiliki hash yang benar di RECORD atau penginstalan akan gagal Jika tanda tangan web JSON digunakan, satu atau lebih tanda tangan JSON Web Signature JSON Serialization (JWS-JS) disimpan dalam file RECORD. jws bersebelahan dengan RECORD. JWS digunakan untuk menandatangani RECORD dengan menyertakan hash SHA-256 dari RECORD sebagai muatan JSON tanda tangan { "hash": "sha256=ADD-r2urObZHcxBW3Cr-vDCu5RJwT4CaRTHiFmbcIYY" } (Nilai hash adalah format yang sama yang digunakan dalam RECORD. ) Jika REKAM. p7s digunakan, harus berisi tanda tangan format S/MIME terpisah dari RECORD Penginstal roda tidak diharuskan untuk memahami tanda tangan digital tetapi HARUS memverifikasi hash di RECORD terhadap konten file yang diekstraksi. Saat penginstal memeriksa hash file terhadap RECORD, pemeriksa tanda tangan terpisah hanya perlu menetapkan bahwa RECORD cocok dengan tanda tangan Melihat
Dibandingkan dengan. telur
FAQRoda mendefinisikan a. direktori data. Haruskah saya meletakkan semua data saya di sana?
Mengapa roda menyertakan tanda tangan terlampir?
Mengapa wheel mengizinkan tanda tangan JWS?
Mengapa wheel juga mengizinkan tanda tangan S/MIME?
Apa masalahnya dengan "purelib" vs. "platlib"?
Apakah mungkin mengimpor kode Python langsung dari file roda?
PerubahanSejak PEP 427, spesifikasi ini telah berubah sebagai berikut
|