Protobuf Descriptors cannot be created directly:生成コードの所有元を特定する
古い生成済み Python メッセージコードは、実行時ライブラリと競合する場合があります。環境内の Protobuf 利用パッケージをすべて変更する前に、そのコードを含むパッケージを特定してください。
対象範囲と症状
古い生成済み Python メッセージコードは、実行時ライブラリと競合する場合があります。環境内の Protobuf 利用パッケージをすべて変更する前に、そのコードを含むパッケージを特定してください。
検索の手掛かりとなる断片です。表現や状況は環境によって異なります。
Descriptors cannot be created directly
出典から確認できること
2022 年の Python 更新情報(英語)によると、upb ベースの 4.21 ランタイムでは、protoc 3.19.0 以降で生成された Python コードが必要でした。この過去の移行は、古い _pb2.py で発生する多くの descriptor エラーの説明になりますが、現在の Protobuf エラーすべてに当てはまるわけではありません。現行のクロスバージョン保証(英語)では、生成コードと実行時ライブラリが区別されています。新しい生成コードを古い実行時ライブラリで動かしてはいけません。Python では、明記された制限と今後の警告に従う限り、3.20.0 以降で生成されたコードに対して、ほとんどの言語より長い互換期間があります。2022 年当時の回避策をすべての環境に適用せず、生成コードを作成した側と実行時ライブラリの組み合わせを確認してください。
区別すべき状況
1. 依存パッケージに、upb への移行前に生成された古い _pb2.py が含まれ、選択した Python ランタイムと互換性がない。
2. ラッパーが別のプロジェクトやリビジョンの生成コードを同梱またはコピーしている。または、新しい生成コードと古いランタイムが組み合わされている。
3. Protobuf がスタックに現れるというだけで、フィールド、データ、インターフェースのエラーを、特定の descriptor 生成エラーと同じものとして扱っている。
推奨する確認手順
この手順は編集上の案内であり、お使いのマシンの診断結果ではありません。
手順 1. traceback 全体を保存し、最初に関係する _pb2.py ファイルを特定します。そのファイルを所有する配布パッケージまたはノードのリビジョン、生成コードのヘッダーやバージョン(記載がある場合)、影響を受ける Python 実行ファイル、google.protobuf.__version__ を記録します。最後の行だけでは生成元を特定できません。
手順 2. 生成元がサポートする実行時ライブラリの範囲を、インストール済みのランタイムおよび公式のクロスバージョン規則と照合します。互換性のある生成コードが使われている、保守が続いている生成元のリリースを優先してください。一つの traceback を根拠に _pb2.py を手編集したり、ComfyUI のランタイム全体を置き換えたりしないでください。
手順 3. 自分で管理する定義については、サポートされる protoc とプラグイン、ランタイムの組み合わせで再生成し、復旧可能なコピーでテストします。サードパーティーの生成ファイルには、所有元が保守している修正を使います。古い組み合わせが必要な場合は隔離し、影響を受けるすべての利用側を確認します。
手順 4. 生成コードを所有するモジュールをインポートし、実際のメッセージを使った最小限の往復処理と元のノードをテストしてから、ほかの Protobuf 利用側も回帰確認します。一時的な実装の切り替えやバージョン制約があれば、適用範囲とロールバック手順を正確に記録します。
完了の確認
選択したランタイムで生成コードを読み込めること、実際のメッセージ処理とノードの呼び出しが成功すること、関連する利用側の整合性が保たれていることを確認します。
制限と注意点
過去のエラー文には、一時的な回避策として protobuf 3.20.x や純 Python 実装が記載されている場合があります。どちらも普遍的な修正ではありません。後者は処理が遅くなる場合があり、共有環境でのダウングレードは、ほかの利用側の要件に反することがあります。この確認では、ユーザーのプロトコルファイルやモデルを実行していません。
出典確認日:2026-09-26。パッケージのインストール、生成コードの実行、GPU 推論、ユーザー環境の修復は行っていません。
参照した原文資料
- Protobuf Python の 2022-05-06 更新情報(英語)(確認日:2026-09-26)
- クロスバージョン実行時互換性の保証(英語)(確認日:2026-09-26)
関連ガイド
次に考えられる原因を確認
同じ症状にも異なる原因があります。関連する記事を順に確認してください。
ログ全体をエラー検索に貼り付けるこの記事は役に立ちましたか?
匿名です。はい・いいえの件数のみ保存し、アカウント、IP アドレス、端末情報は保存しません。
出典と参考資料
2026-09-26 に Protobuf の 2022 年の Python upb 移行と現行のクロスバージョン実行時互換性保証を英語資料で確認しました。パッケージや生成コードは実行していません。
01Protobuf Python の 2022-05-06 更新情報(英語)出典の確認日: 2026-09-2602クロスバージョン実行時互換性の保証(英語)出典の確認日: 2026-09-26問題を報告 · 71c03172-b04f-5784-8cae-07f4981ec445
関連記事
編集者がこのページに関連づけた記事です。
環境と一つの管理された変更を記録し、メタデータと実行時の成功を区別します。