.PYO

PYO ファイル

Python Optimized Bytecode File (legacy)
質問する
クイック回答

.pyoファイルは、Pythonを -O または -OO フラグで実行した際に生成されるレガシーなPython最適化済みバイトコードキャッシュです。バイナリ形式は .pyc ファイルと同一です。Python 3.5において2015年(PEP 488)に .pyo 拡張子は廃止されたため、現在これを見かける場合は Python 2 または Python 3.0-3.4 由来のものです。対応するバージョンの Python を使用してコマンドラインから実行するか、decompyle3 や uncompyle6 を使用して .py に逆コンパイルして利用します。

開発元: Python Software Foundation (CPython) カテゴリ: 開発用ファイル オープンスタンダード MIME: application/x-python-code
対応OS Windows macOS Linux Web
関連: .DO · .MD · .HEX · .XSD

このページの内容

19k+ 個の拡張子を索引済み
最終確認日:Jun 27, 2026

ファイルの種類がわかりませんか?

ファイルを識別ツールにドロップしてください。最初の数バイトを読み取って形式を特定します。

ファイルを識別する

PYO ファイル形式とは?

.pyo ファイルは、CPython インタープリタを -O(最適化)または -OO フラグを付けて実行した際に生成される レガシーな Python 最適化済みバイトコード ファイルです。-O を渡すとコンパイル済みバイトコードから assert 文が取り除かれ、-OO を渡すとさらにすべての docstring(ドキュメント文字列)が削除され、ファイルサイズがわずかに削減されます。

内部的には、.pyo ファイルは .pyc ファイルと バイナリ形式においてバイト単位で同一 です。16バイトのヘッダー(4バイトのバージョン固有マジックナンバー、4バイトのフラグフィールド、4バイトのタイムスタンプまたはソースハッシュ、4バイトのソースサイズ)に続いて、マージル(marshal)された CPython コードオブジェクトが格納されています。最適化レベルはコンパイルされたコンテンツにのみ反映され、ファイルヘッダーには記録されません。

.pyo 拡張子は、PEP 488(2015年9月)により Python 3.5 で非推奨 となり、現在の Python リリースでは生成されなくなりました。Python 3.5 以降、最適化されたバイトコードは __pycache__ 内に module.cpython-311.opt-1.pyc(-O の場合)や .opt-2.pyc(-OO の場合)といった名前で保存されます。今日 .pyo ファイルに遭遇した場合、それは Python 2 または Python 3.0-3.4 のコードに由来するものです。

.pyo ファイルは CPython のバージョンをまたいで互換性がありません。マジックナンバーはリリースごとに変更されます。uncompyle6(Python 2-3.8対応)や decompyle3(Python 3.7-3.11対応)などのツールを使用すると、.pyo ファイルを元の .py ソースに近い形に逆コンパイルできますが、その精度は Python のバージョンやコードの複雑さによって異なります。

セキュリティと安全性

リスク: MEDIUM

.pyo ファイルは、ファイルシステムへのアクセス、ネットワーク、サブプロセスの実行など、Python スクリプトのすべての機能を備えた Python バイトコードとして実行されます。信頼できないソースからの .pyo ファイルは決して実行しないでください。ウイルス対策ソフトウェアは .pyo の内容をスキャンしないことがよくあります。悪意のある Python アプリは、リバースエンジニアリングを困難にするためにバイトコードのみ(.pyc/.pyo)で配布されることがありますが、逆コンパイラによってソースの大部分を復元することが可能です。

形式の詳細

概要
正式名称Python Optimized Bytecode File (legacy)別名 Python compiled optimized file, PYO file
開発元Python Software Foundation (CPython)登場時期 Early CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
MIME タイプapplication/x-python-code
タイプバイナリ CPython バイトコード(.pyc と同一形式、-O または -OO フラグで生成)
標準規格オープン・ロイヤリティフリー

PYO ファイルを開くプログラム

Windows4 apps
Python (run the file) オープンソース コマンドプロンプトから «python file.pyo» を実行します(Python 2 / 3.0-3.4 のみ)。Python 3.5以降の場合は、まず .pyc にリネームするか、一致するバージョンの Python を使用してください。
decompyle3 (decompile to .py) オープンソース «pip install decompyle3» を実行後、«decompyle3 file.pyo > file.py» を実行します。Python 3.7-3.8 のバイトコードで動作します。
uncompyle6 (decompile Python 2-3.8) オープンソース «pip install uncompyle6» を実行後、«uncompyle6 file.pyo > file.py» を実行します。Python 2.4-3.8 をサポートしています。
VS Code (view bytecode with extension) オープンソース .pyo を .pyc にリネームし、«Python Disassembler» または «Bytecode Viewer» 拡張機能を使用してオペコードを検査します。
macOS1 app
Python オープンソース 一致するバージョンの Python で «python file.pyo» を実行します。ほとんどの Linux ディストリビューションには Python が含まれています。
Linux1 app
Python オープンソース 一致するバージョンの Python で «python file.pyo» を実行します。ほとんどの Linux ディストリビューションには Python が含まれています。
Web1 app
Decompiler.com (online decompile) 無料 .pyo ファイルをアップロードすると、ブラウザ上で Python バイトコード(.pyo を含む)を .py に逆コンパイルします。

技術的詳細

詳細仕様
フォーマットの関係性`.pyc` とバイト単位で同一のファイル形式。ファイル拡張子と最適化コンテンツによってのみ区別される
ヘッダー構造16バイトのヘッダー:4バイトのバージョンマジック + 4バイトのフラグ + 4バイトのソース mtime またはハッシュ + 4バイトのソースサイズ
ボディ形式マージルされた CPython コードオブジェクト(バイトコード命令、定数プール、名前、変数名、ネストされたコードオブジェクト)
バイト順序リトルエンディアン(CPython marshal シリアル化形式)
最適化レベル -Oコンパイル済みバイトコードから `assert` 文を削除する
最適化レベル -OOコンパイル済みバイトコードから `assert` 文とすべての docstring を削除する
非推奨化`.pyo` 拡張子は Python 3.5 で廃止(PEP 488、2015年9月)。現在の Python リリースでは生成されない
現代の代替手段`__pycache__` 内に保存される `module.cpython-3X.opt-1.pyc`(レベル1)または `.opt-2.pyc`(レベル2)
バージョンの移植性CPython バージョン間での移植性なし。0-3バイト目のマジックナンバーは CPython のメジャーリリースごとに変更される
整合性検証Python 3.7+ (PEP 552): ヘッダーフラグに格納されたソースのオプションの SipHash。Python 2 / 初期の 3: mtime 比較のみ
逆コンパイルツール`uncompyle6` (Python 2-3.8), `decompyle3` (Python 3.7-3.11)
レガシーの範囲Python 2 または Python 3.0-3.4 でのみ生成。Python 3.5 以降を対象とするプロジェクトでは遭遇しない
リリース日Early CPython (1990s); same as .pyc but with optimizations (assert removal with -O; docstring removal with -OO)
最新バージョンDEPRECATED in Python 3.5 (PEP 488, September 2015) - .pyo extension no longer generated; replaced by .cpython-3X.opt-1.pyc / .opt-2.pyc naming
オープンスタンダードはい · ロイヤリティフリー
仕様書peps.python.org

PYO の変換

コミュニティ Q&A

ユーザーからの質問
質問する
PYO ファイルを扱うユーザーからヘルプを得られます。OSやソフトウェアのバージョンなど、具体的に記載してください。
アカウント不要 ・ 通常1日以内に回答されます

まだ質問はありません。PYO ファイルについて最初の質問をしてみましょう。

よくある質問

.pyoファイルとは何ですか?
レガシーな Python 最適化済みバイトコードファイルです。Python の -O または -OO 最適化フラグを使用して作成された .py スクリプトのコンパイル済み形式です。バイナリ形式は .pyc と同一で、Python 2 および Python 3.0-3.4 で生成されていました。Python 3.5以降は .pyo ファイルを作成しません。
.pyoファイルを開くにはどうすればよいですか?
直接「開く」ものではなく、Python が自動的に実行します。内容を読み取るには、decompyle3 や uncompyle6 を使用して .py ソースコードに逆コンパイルするか、拡張子を .pyc に変更してバイトコードディスアセンブラを使用します。
.pyoファイルを削除しても大丈夫ですか?
はい。.pyo ファイルはバイトコードキャッシュです。必要に応じて Python が再生成します。これらを削除しても、動作中の Python インストールやアプリが壊れることはありません(.py ソースファイルが存在する場合)。
.pyoと.pycの違いは何ですか?
.pyo は -O(assert削除)または -OO(docstringも削除)でコンパイルされたもので、.pyc は最適化なしでコンパイルされたものです。バイナリ形式は同一です。Python 3.5以降はこれらが統合され、.opt-1.pyc / .opt-2.pyc となりました。
なぜPython 3.5以降は.pyoファイルを作成しないのですか?
PEP 488 (2015) により、同じバイナリ形式に対して2つの拡張子が存在する混乱を避けるために .pyo は廃止されました。現在、最適化レベルは .pyc ファイル名のサフィックス(.opt-1.pyc、.opt-2.pyc)にエンコードされます。
.pyoを逆コンパイルしてPythonソースを取得するには?
decompyle3(Python 3.7-3.8)または uncompyle6(Python 2-3.8)を使用します: «pip install decompyle3 && decompyle3 file.pyo»。または、Webベースのオプションとして decompiler.com にアップロードします。特に docstring が欠落している -OO コンパイル済みファイルの場合、結果が不完全になる可能性があります。

参考文献

1PEP 488 - Elimination of PYO filespeps.python.org
2Python Docs - compileall moduledocs.python.org

さらに探索

データベース全体から

今週のトップ拡張子

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.PARTPartial Download File
4.BINCD/DVD Disc Image (BIN/CUE)
5.EXEWindows Executable (Portable Executable)
6.RPMSGRestricted Permission Message
7.MDMarkdown Document
8.DATProgram Data File (generic)
9.NOMEDIAAndroid No-Media Marker File
10.TXTPlain Text File

関連する拡張子

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

無料ファイルツール

ブラウザで動作するファイル識別および画像変換ツール。すべてお使いのデバイス上で実行されます。

ツールボックスを開く

ファイル拡張子を A-Z で閲覧