pyinstallerを使用してexeを作成しやすくする

最近、ここで必要なタスクを実行するアプリケーションを短時間で作成するためにPython言語を使用するために、Python言語と知り合いになりました。 計画されたアプリケーションは、Python自体がインストールされたOSだけでなく起動できるため、exeをビルドすることにしました。 ハブに関するいくつかのトピックとそれらについてのコメントを読んで、pyinstallerはこれらの目的に最適であるという結論に達しました。 使い方は非常に簡単ですが、それでもいくつかの反復ポイントを減らすことができます。



最初に、これに使用するソフトウェアについて説明します。

  1. CPython 2.6.5 2.7または3.xではない理由を尋ねますか? pyinstallerに使用される以下に説明するpywinバージョンは、2.6までのバージョンでのみ使いやすくなります。
  2. pyinstaller 1.4 r854 (使用開始時、これは最後のリビジョンでした)
  3. pywin32-214.win32-py2.6は、sourceforgeで利用可能な最新バージョンです。 pyinstallerが依存関係を判断するために使用します(一般に、最終更新日は09日であるため、それらを除外する必要があります)
  4. UPX 3.0.7-ファイル圧縮に使用




マニュアルに従ってexeをアセンブルするには、次を行う必要があります。

  1. Configure.pyを実行します。これは、アセンブリに必要なすべてのコンポーネントの可用性を確認します(UPXの追加/削除、ライブラリの変更など、構成を変更するときに実行します)。
  2. pyinstallerフォルダーのMakeSpec.pyを使用して、必要なパラメーターに従ってspecファイルを作成します
  3. 同じフォルダーからBuild.pyを使用し、specファイルへのパスを指定して、exeをビルドします




pyinstallerは私のpythonフォルダー(デフォルトパス)と別のディスク上のソースに格納されているため、コンソールのパスを使用してシャーマニズム手順を減らし、batファイルを使用して同じパラメーターを絶えず追加することにしました。 。



まず、定義された目標:

  1. MakeSpecファイルとBuildファイル、およびspecファイルへのパスを常に設定する必要性からの切り離し
  2. ソースコードと同じディレクトリにある完成したexeを取得する




batファイル自体の実装(途中でコメント、コメント付きの完成したバッチファイルは以下):

1.バットラインの標準-コンソールへのコマンドの出力をキャンセルし、最後のコマンドをクリアします。

@エコーオフ

cls


2. pyinstallerへのパスと、specファイルとexeファイルが保存されるフォルダーへのパスを指定します。

pyinstPath = cを設定します:\ python26 \ pyinstaller

buildPath = pyinstPath \ binを設定します


3.完成したexeの動きをチェックし、ソースファイルの名前が入力されているかどうかをチェックするための変数の値を設定します(本質的に-フラグ):

moveBin = 0に設定

fileParam = 0に設定


4.入力したパラメーターのチェックを開始します。 処理のために、入力されたキーでラベルを呼び出します(3行目)。 各パラメーターを処理した後、ラベルParamChkに戻ります。 パラメータが終了したら、バイナリアセンブリラベル(2行目)に移動します。

:ParamChk

if "%1%" == "" goto binBuild

goto p 1


5.実際には、キー/パラメーター自体にラベルが付けられます。 入力のバリエーションはさまざまであり、本質は同じです-そのようなキーが存在する場合、ソースファイルの名前、specファイルが保存されるパスの取得、ヘルプ出力、 shiftコマンドの使用など、必要な操作を実行し、パラメーターを左に1シフトします(パラメーターが2、%1になりました、など):

:pF

:p / F

:p /ファイル

:p-ファイル

「%2」でない場合 == ""

pyFile = 2を設定

そうでない場合 fileParam == 1 set fileParam = 1



シフト シフト ParamChkに移動



:pO

:P / O

:p /アウト

:p-アウト

「%2」でない場合 == "" buildPath = 2を設定します

シフト シフト ParamChkに移動



:pM

:p / M

:p /移動

:p-移動

moveBin = 1に設定

シフトして ParamChkに移動



:pH

:p / h

:p /ヘルプ

:p-ヘルプ

エコー。

echo使用:%〜n0 [/ F [パス]ファイル名] [/ O dir] [/ M]

エコー。

echo / F、-F、 / file、-file-.pyファイルへのパス

echo / O、-O、 / out、-out-出力ディレクトリ。 デフォルトディレクトリ- buildPath

echo / M、-M、 / move、-move-作成されたバイナリ .pyファイルディレクトリに移動します

goto :EOF


6.すべてのパラメーターを確認して処理した後、ラベル:binBuildに移動し、ソースファイルの名前が入力されているかどうかを確認します。 そうでない場合は、ファイル名の必要性、ヘルプの存在に関するメッセージを表示し、作業を完了します。

:binBuild

if fileParam == 0 echo処理するファイル ありません 。 ヘルプ gotoに / h 使用:EOF


7. exeアセンブリの実行に応じてパラメーターを設定します。 pyinstallerマニュアルの構文を使用します。 この場合、次のパラメーターが指定されます-1つのファイルへのアセンブリ、UPXを使用した圧縮+完成したexeのフォルダー変更:

set specParams =-F - X - o buildPath


8.次に、MakeSpecへのパス、上記のビルド、および最初のパラメーターを使用して、specファイルを作成し、それに基づいてexeを作成します。 ひどい松葉杖が1つあります-バッチファイルに特別なわけではないので、ループ(2行目)のみを使用して、ソースファイルへのパスから名前のみを選択する方法を見つけました。

"%pyinstPath%\ MakeSpec.py" specParams "%pyFile%"

for %% i in pyFile do set fileName = %% 〜ni

pyinstPath \ Build.py "%buildPath%\%fileName%.spec"


9.バイナリをソースフォルダーに移動するようにパラメーターが設定されている場合は、ポイント8から松葉杖を使用して取得します。 そして、確認なしで置換ファイルを移動するだけです:

if moveBin == 1

for %% i in pyFile do set outDir = %% 〜pi

move / y "%buildPath%\ dist \%fileName%.exe" outDir





コメント付きの完成したbatファイルはこちらです。

使用するには、pyinstallerフォルダーの場所と必要なパラメーターに従って、手順2と7の行を編集するだけです。



免責事項

以上です。 こことbatファイル自体の両方のコメントで、コマンド構文の機能については説明せず、実行されたアクションのシーケンスについてのみ説明したことに注意してください。 コンソール内のコマンドのヘルプについては、単に<command_name> /?を実行してください。 そして、彼らは私がここで説明できる以上のことをあなたに書いてくれます。 松葉杖を取り除く方法や、特定のポイントの実装を促進/簡素化する方法を知っているなら、喜んで聞きます。 このトピックがPythonブログではなく、他のブログにあるべきだと思う場合は、どれを示してください。



All Articles