218

.pyファイルから生成された.pycファイルからいくつかの情報を取得することは可能ですか?

4

9 に答える 9

202

Uncompyle6は Python 3.x および 2.7 で動作します。これは最新のツールであるため、以前のフォークを統合し、自動化された単体テストに重点を置いているため、推奨されるオプションです。GitHub ページに詳細があります。

  • Python 3.7 以降を使用している場合は、3.7 以降に焦点を当てた Uncompyle6 のフォークである decompyle3 を試すこともできます。
  • 必要に応じて、これらのプロジェクトで GitHub の問題を提起してください。両方とも、さまざまな Python バージョンで単体テスト スイートを実行します。

これらのツールを使用すると、変数名とドキュメント文字列を含むコードを取得できますが、コメントは含まれません。

古いUncompyle2は Python 2.7 のみをサポートします。これは、.pyc バイトコードを .py に逆コンパイルするために少し前にうまく機能しましたが、unpyclib は例外でクラッシュしました。

于 2013-02-11T08:27:27.207 に答える
34

Easy Python Decompilerを試すことができます。Decompyle++ と Uncompyle2 に基づいています。Python バージョン 1.0-3.3 の逆コンパイルをサポートしています。

注: 私は上記のツールの作成者です。

于 2014-02-20T18:39:42.790 に答える
29

はい、pypiunpyclibで見つけることができます。

$ pip install unpyclib

.pyc ファイルを逆コンパイルするよりも

$ python -m unpyclib.application -Dq path/to/file.pyc
于 2011-04-18T14:07:44.700 に答える
14

Decompyle++ (pycdc) was the only one that worked for me: https://github.com/zrax/pycdc

was suggested in Decompile Python 2.7 .pyc

于 2013-03-26T22:02:30.647 に答える
4

はい、可能です。

Decompyle++ https://github.com/zrax/pycdc/と呼ばれる完全なオープンソースの Python (.PYC) 逆コンパイラがあります。

Decompyle++ は、コンパイルされた Python バイトコードを有効で人間が読める Python ソース コードに変換することを目的としています。他のプロジェクトはさまざまな成功を収めてこれを達成しましたが、Decompyle++ は、Python の任意のバージョンからのバイトコードをサポートしようとするという点で独特です。

于 2016-07-17T09:23:52.790 に答える
2

pip install pycompyle6 を使用してインストールします

pycompyle6 ファイル名.pyc

于 2018-08-09T09:11:01.843 に答える
0

pyc を逆コンパイルする必要があるが、python 3.9 がインストールされている場合は、uncompyle6 を強制的に実行できます。完璧ではありませんが、機能します。site-packages\uncompyle6\bin\uncompile.py を編集するだけです

def main_bin():
if not (sys.version_info[0:2] in ((2, 6), (2, 7), (3, 0),
                                  (3, 1), (3, 2), (3, 3),
                                  (3, 4), (3, 5), (3, 6),
                                  (3, 7), (3, 8), (3, 9)

インストールしたバージョンを他のバージョンと同じ形式で追加して保存するだけです。少なくとも実行されます。

于 2021-08-12T15:04:36.983 に答える