2016-09-13 9 views
5

私はPythonスクリプトのコンパイル版を出荷し、コンパイルされたファイルが実際に元のものと同じであることを証明できるようにする必要があります。再現可能なビルドをPythonで

私たちは、これまでに使用することは簡単です:

find . -name "*.py" -print0 | xargs -0 python2 -m py_compile 

問題は、これは変動要因が何であるかわからない(再現性ではなく、2人の処刑は私たちに同じで同じ.pycファイルを与えないということですPythonファイル)、コンパイルされた新しいバージョンを作成するためにビルドスクリプトを他の人に与えるのではなく、いつも同じコンパイル済みのバージョンを出荷するようにしています。

これを達成する方法はありますか?

おかげ

+0

コンパイルのバイトレベルの変動が予想されます。コンパイルされたバージョンの出荷時に何が問題になっていますか? – Andrey

+0

1)詳細2)厳密なpythonバージョン3)時間に関連した変動 – Andrey

+0

コンパイルされたバージョンを含むzipファイルをサーバー/ドライブに保存し、各バージョンのコピーを維持する必要があります。コードホスティング用のgitとビルドスクリプト。特定のリビジョンでちょうどチェックアウトし、ビルドをリメイクし、それが同じであるかどうかをチェックすることができれば簡単になります。 –

答えて

8

コンパイルPythonのファイルは、4バイトのマジックナンバーとコンパイルの4バイトのdatetimeが含まれます。これはおそらくあなたが見ている不一致を説明します。

チェックサム処理からバイト5-8を省略すると、特定のPythonバージョンの定数チェックサムが表示されます。

.pycファイルの形式は、Ned Batchelderのthis blog postで与えられています。

関連する問題