Konversi PYO menjadi PY
Pulihkan source Python yang mudah dibaca dari bytecode Python 2 teroptimasi lama.
Bagaimana mengkonversi pyo ke py berkas
- Pemrograman
- Belum ada peringkat.
Software Python 2 lama mungkin hanya menyediakan file .pyo ketika editor, sistem code-review, atau proyek pemeliharaan memerlukan source .py yang dapat dibaca. Konversi memerlukan dekompilasi karena file PYO tidak berisi teks source asli.
Apa itu format PYO
File PYO adalah bytecode Python yang dioptimalkan dan dihasilkan oleh Python 2 ketika kode dijalankan dengan -O atau -OO. Python 2 biasanya menyimpannya di samping source sebagai module.pyo; Python 3.5 dan versi setelahnya menghapus format PYO terpisah dan menyimpan bytecode yang dioptimalkan sebagai file .pyc bertag.
Anda mungkin menemukan file PYO dalam aplikasi Python 2 yang diarsipkan, software perangkat embedded, dan direktori instalasi lama yang berisi file seperti __init__.pyo. PYO adalah bytecode yang dikompilasi untuk interpreter Python, bukan salinan file .py asli yang dikompresi atau diganti namanya.
Apa itu format PY
File PY adalah source code Python dalam teks biasa yang dapat dibuka, diedit, dicari, diberi versioning, dan dijalankan dengan interpreter yang kompatibel. Format ini diharapkan oleh editor source, repository kode, linter, dan sebagian besar development tool.
Dekompilasi dapat membuat ulang kode Python yang tampak dapat dieksekusi, tetapi biasanya tidak dapat memulihkan komentar, whitespace asli, komentar encoding source, formatting yang persis sama, atau konstruksi source yang dibuang selama kompilasi. Banyak nama tetap ada dalam bytecode, tetapi nama-nama tersebut tidak dijamin sesuai dengan nama yang dimaksudkan oleh pembuatnya.
Cara mengonversi PYO ke PY
- Identifikasi versi bytecode. Ekstensi
.pyobiasanya menunjukkan Python 2, tetapi bytecode Python 2.5, 2.6, dan 2.7 berbeda. Gunakan aplikasi terkait, dokumentasinya, atau tool inspeksi bytecode untuk menentukan versi dari file header. Decompiler harus mendukung versi tersebut. - Pertahankan file asli. Kerjakan pada salinan dan hindari mengeksekusi file PYO yang tidak tepercaya. Jika file tersebut berisi kode proprietary, jangan upload ke layanan pihak ketiga tanpa otorisasi.
- Instal decompiler lokal.
uncompyle6adalah opsi open-source yang umum digunakan untuk bytecode Python; instal di isolated environment denganpython -m pip install uncompyle6.pycdc, yang dibuat dari repository resminya, adalah opsi lokal lainnya. Periksa versi bytecode yang didukung oleh setiap proyek sebelum memilihnya. - Jalankan decompiler. Misalnya,
uncompyle6 -o recovered module.pyomenulis file hasil pemulihan di bawahrecovered. Beberapa release atau wrapper mungkin menolak suffix.pyomeskipun file tersebut berisi bytecode Python 2 standar. Dalam kasus itu, salin file tersebut kemodule.pyclalu coba lagi; mengganti nama hanya mengubah nama file, bukan bytecode. - Ambil standard output jika diperlukan. Jika tool menampilkan source dan bukan membuat file, gunakan
uncompyle6 module.pyo > module.py. Periksa hasilnya sebelum mengganti source yang sudah ada. - Validasi dengan interpreter yang sesuai. Pertama, periksa output Python 2 dengan interpreter Python 2 yang sesuai, seperti
python2 recovered/module.py, dalam controlled environment. Perbaiki error decompiler secara manual, lalu port kode ke Python 3 dengan tool seperti2to3jika sesuai; automatic porting tidak menggantikan testing.
Rename biasa, archive extractor, atau operasi text export tidak dapat mengonversi PYO menjadi source. Online converter yang bereputasi umumnya bukan rekomendasi praktis untuk format ini: dukungan bergantung pada versi bytecode Python yang tepat, dan upload software proprietary akan mengekspos kodenya. Decompiler lokal lebih aman dan biasanya lebih andal.
Batasan kualitas dan kompatibilitas
Dekompilasi adalah perkiraan. Komentar, formatting, sintaks khusus source, dan sebagian organisasi asli akan hilang. Kompilasi Python 2 dengan -O menghapus statement assertion; -OO juga menghapus docstring. Oleh karena itu, file hasil pemulihan mungkin berbeda dalam perilaku atau dokumentasinya meskipun dapat dijalankan.
Periksa indentation, exception handling, generator, decorator, encoding string, import, dan control flow. Decompiler dapat menghasilkan syntax error atau kode yang secara halus tidak benar ketika tidak sepenuhnya mendukung versi bytecode atau konstruksi compiler tertentu.
File PYO juga mungkin bergantung pada modul package, file data, native extension, environment variable, dan working directory tertentu. Konversi yang berhasil menghasilkan teks source, bukan aplikasi pengganti yang berdiri sendiri.
PYO vs PY: perbandingan format
Bagaimana format PYO dan PY dibandingkan pada properti yang paling penting untuk konversi ini.
| Properti | .PYO Python Optimized Bytecode | .PY Python source file |
|---|---|---|
| Dapat dibaca teks biasa | Tidak | Ya |
| Pemformatan teks | Tidak ada | Dasar |
| Gambar | Tidak | Tidak |
| Pengeditan lanjutan | Tidak dapat diedit langsung | Mudah |
| Terbuka di browser web | Tidak | Tidak |
| Ukuran file umum | Sangat kecil | Kecil |
| Standar terbuka | Tidak | Ya |
| Paling cocok untuk | Penyematan dalam aplikasi | Penyuntingan dan pascaproduksi |
| Diperkenalkan | — | 1991 |
| Pengembang | Python Software Foundation | Python Software Foundation |
| Tipe MIME | — | text/x-python |
Basis data saat ini tidak berisi pyo file converter.