0.背景
私は最近Pythonが好きで、オーディオ関連の作業をやり直しているので、Pythonを使用してさまざまなオーディオファイルを生成するための小さなツールを作成したいと思います。ランニング効果は以下のとおりです。しかし、同僚のために使用したいのですが、他の人はPython環境を持っていない可能性があるため、pyinstallerを使用してexeファイルをパッケージ化して生成します。誰が知っている、exeファイルは30Mです。おびえた。検索した後、pipenv、anaconda、UPX、mingwなどのさまざまなソリューションを試し始めましたが、肉体的にも精神的にも疲れていました。突然、Liu Anzhongは、自分のコンピューターには既製の全能のMicrosoft Big Macが1つしかないのだと思い、巨人の肩の上に立つのが上手くなり、すぐに花が咲きそうだと感じました。過去2日間の多くの計画のエルゴード的な試みを組み合わせると、私は一般的な考えを持っています。
基本的な原則は次のとおりです。Pythonスクリプトは、Pythonインストールディレクトリのpython.exe xxx.pyコマンドを呼び出すことにより、cmdコマンドラインで実行されます。C ++には、外部のexe実行可能プログラムを呼び出すメカニズムがあります。この場合、C ++プログラムを作成し、python.exeを呼び出して、C ++プログラムでスクリプトを実行できます。理論は完全に適合します。
1.準備
1.vs2017やvs2010などのIED環境をコンピューターにインストールします
2. pyinstallerによってパッケージ化されていないPythonスクリプト(またはpyinstaller -Fコマンドによってパッケージ化された単一のexeファイル)を準備します。
行動を開始します:
1. vs2017でvs2017_win32_prj_slnという名前のソリューションを作成し、このソリューションの下に新しいwin32コンソールアプリケーションを作成します(図1)。
1.1作成後の図2:
1.2図2のファイルcall_python_test.cppを開くと、空のメイン関数があります
図1
図II
2.実用的な解決策:
2.0main関数に次のコードを追加します。
2.1ここで、D:\\ Python37 \\ python.exeはPythonのインストールパスです
2.2ここで、E:\\ study_python \\ pyinstaller_test \\ general_2ch_sinwav_file.v1.300.pyは、Pythonスクリプトの場所です。
2.3バックスラッシュ2.12.2のinはエスケープを意味します。それを無視しないでください。
2.4コンパイルアクションの実行を開始します。図3
2.5実行後、図4に示すように、プロジェクトの下にファイルが生成されます。サイズを見て、びっくりしましたか?9Kああ9Kああ。
2.6pyinstallerによって生成された30Mを比較します。驚いた、驚いた、驚いた、驚いた、驚いた?
2.7新しく作成されたファイルcall_python_test.exeの効果を図5に示します。
2.8私のpoのコードを注意深く見て、実践に長けている場合は、pyinstallerによって生成された.exeファイルを直接呼び出すことも可能であることがわかります。誰もがそれを試してみたいと思うかもしれません。
2.9プログラマーのコーディングプロセスはこれまで順調に進んだことはなく、常に問題解決への道を歩んでいます。なんでそんなこと言うの?図5を注意深く見てください。少し残念でしたか?ガジェットで黒いcmdウィンドウが起動しました。それを解決する方法は?
私の2番目の改善された計画に注意を払ってください https://blog.csdn.net/qingfengjuechen/article/details/103021189
int main()
{
system("D:\\Python37\\python.exe E:\\study_python\\pyinstaller_test\\general_2ch_sinwav_file.v1.300.py"); //v1, fast
//system("D:\\Python37\\pythonw.exe E:\\study_python\\pyinstaller_test\\general_2ch_sinwav_file.v1.300.py"); //v1.1, fast
//system("D:\\Python37\\general_2ch_sinwav_file.v1.300.exe"); //v2
return 0;
}
図3
図4
図5