7

pyinstaller でビルドされた実行可能ファイルに対してカバレッジを実行する方法はありますか? Pythonスクリプトのように実行してみましたが、実行可能ファイルを入力として好きではありませんでした(実際に動作するとは思っていませんでした)。ビルドされた実行可能ファイルに対してカバレッジを実行する簡単な方法はありません。 .... (これは Windows .exe 上にあります)

私が使用しているカバレッジ パッケージは、nedbatchelder.com ( http://nedbatchelder.com/code/coverage/ )の「easy_install カバレッジ」で入手できる通常のカバレッジ パッケージです。

4

2 に答える 2

6

これは完全に定式化された答えではありませんが、これまでに見つけたものです。

pyinstaller がどのように機能するかについての私の理解から、バイナリは Python インタープリターを埋め込み、スクリプトをロードするブートストラップの小さな C プログラムから構築されるということです。PyInstaller で構築された EXE には、Python コードのリソースを含む実際のバイナリの末尾にアーカイブが含まれています。これはhttp://www.pyinstaller.org/export/develop/project/doc/Manual.html#pyinstaller-archivesで説明されています。

Pyinstaller/loader/iu.py Docsから iu.py があります。バイナリからインポートするためのインポート フックを作成できるはずです。pyinstaller 逆アセンブラーをグーグルで検索すると、必要な部分を抽出できるように見えるhttps://bitbucket.org/Trundle/exetractor/src/00df9ce00e1a/exetractor/pyinstaller.pyが見つかりました。

これの他の部分は、バイナリ アーカイブ内のすべてのリソースがコンパイルされた Python コードになることです。ほとんどの場合、coverage.py は、通常の状態で実行しているときに他のコンパイル済みモジュールにヒットした場合と同じように、役に立たない出力を提供します。

于 2013-01-25T22:59:03.540 に答える