PYD ファイル形式とは?
Python動的モジュールは、Windowsシステムでは.pydファイルとして保存されます。.pydファイルは、PE (Portable Executable) バイナリ形式のWindows DLLであり、インポート時にインタープリタが呼び出す PyInit_<modulename> エントリポイントをエクスポートしていることで区別されます。.pydモジュールには、他のPythonアプリケーションで使用できるライブラリが含まれています。動的ライブラリにより、コードのロードが高速化され、アプリケーションのモジュール性が向上します。.pyc や .pyo バイトコードファイルとは対照的に、.pydファイルはWindows専用です。LinuxやmacOSでは .so 形式が同じ役割を果たします。
.pydファイルには、コンパイルされたPython拡張モジュールが含まれています。モジュールには1つ以上の名前空間が含まれており、そのようなモジュールを使用するPythonプログラムは、そのモジュール内の関数を参照できます。モジュールは複数のPythonアプリケーションで使用できます。最新のビルドでは、ファイル名にABIタグ(例:cp312-win_amd64.pyd)が含まれており、特定のCPythonバージョンとビット数にファイルを固定しています。.pydモジュールの作成と配布は、通常、Cythonやsetuptoolsなどのビルドツールによって処理されます。
セキュリティと安全性
リスク: MEDIUM.pydは、Pythonがサンドボックスなしでプロセス内で実行するネイティブ実行コードであるため、悪意のある .pydはPythonプログラムができることなら何でも実行できてしまいます。実用的なリスクは次のとおりです。(1) Pythonが検索するフォルダに置かれた .pydがインポートを乗っ取る可能性があること(DLL/PYD検索順序の乗っ取り)、(2) エラーを「修正」するためにランダムなサイトから個別の .pydファイルをダウンロードすることがマルウェアの感染経路になること。常にpipを使用してPyPIから適切なパッケージを再インストールしてください。正当にpipインストールされたパッケージ内の .pydファイルは正常です。ダウンロードフォルダやプロジェクトフォルダにある予期しない署名のない .pydは疑いを持って扱い、スキャンしてください。
形式の詳細
概要PYD ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナ形式 | Windows PE (Portable Executable) - `.dll` や `.exe` ファイルと同じバイナリコンテナ |
| マジックバイト | オフセット0に `MZ` (0x4D 0x5A) (DOSスタブ); 0x3Cに格納されたオフセットにPEシグネチャ |
| バイト順序 | リトルエンディアン |
| 主要なエクスポートシンボル | `PyInit_<modulename>` (Python 3) または `init<modulename>` (Python 2) - CPythonのインポートシステムはこの関数を呼び出してモジュールを初期化します |
| ABIファイル名タグ | バージョンタグ付きビルドは `name.cpXYZ-win_amd64.pyd` というパターンを使用します。例えば `cp312-win_amd64` は64ビットWindows上のCPython 3.12を対象としています |
| プラットフォーム | Windowsのみ。LinuxおよびmacOSの同等品は `.so` 共有オブジェクトです |
| MIMEタイプ | `application/octet-stream`; また `application/vnd.microsoft.portable-executable` としても登録されています |
| 標準的なファイルサイズ | 20 KB - 数 MB。大規模なネイティブライブラリ(NumPyやSciPyのコンポーネントなど)は数十MBに達することがあります |
| 圧縮 | なし - 生のPEセクションであり、組み込みの圧縮はありません |
| コード署名 | オプションのAuthenticode (PE) デジタル署名。それ以外の場合、整合性は検証されません(ネイティブマシンコード) |
| インタープリタの互換性 | 正確なCPythonバージョン、ビット数(32/64ビット)、およびABIタグが一致する必要があります。一致しないファイルはインポート時に `ImportError` を発生させます |
| ビルドツールチェーン | 通常、setuptoolsの `ext_modules`、CMake/scikit-build、またはCFFIを介してC、C++、またはCythonソースからコンパイルされます |
| リリース日 | Late 1990s - Python on Windows has loaded extension modules from .pyd (a renamed .dll) since the Python 1.x/2.0 era |
| 最新バージョン | Tracks CPython; the per-version ABI tag (e.g. cp312-win_amd64) determines compatibility, current CPython 3.13 (2024) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | docs.python.org |
PYD の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。PYD ファイルについて最初の質問をしてみましょう。