pythonのexe化はめんどくさいよね・・・
windowsだったらバッチファイルで実行すれば?
anaconda環境のpythonプログラムなんだけど・・・
こんなやり方はどうかな?
anaconda環境でのpythonは、開発しやすく、事務用プログラムなどは、サクッと作って実用化できるんですが、毎回anaconda環境を立ち上げてからの実行になりますので、自分以外が使うときはいろいろと面倒になります。
そこで、バッチファイルをダブルクリックしたらanaconda環境から目的のpythonプログラムを起動してプログラムを実行できるようにできないかと調査してみましたので、その備忘録を記載します。
バッチ実行の大まかな流れ
①実行するプログラムの場所へcdコマンドで移動
②conda環境を有効にする
③conda環境でpythonプログラムを実行
の3ステップになります。
activate.bat
anaconda環境には、activate.batというバッチファイルがあります。
階層は、
インストール階層(通常C:\\Users\\ユーザー\\Anaconda\\)のScripts\\activate.bat
に存在しています。
これをコマンドプロンプトにて
call C:\\Users\\ユーザー\\Anaconda\\Scripts\\activate.bat
※ユーザーは任意の階層
とすると、condaが起動して、anaconda環境でpythonプログラムを実行できるようになります。
Activateと仮想環境
Pythonでは、仮想環境という閉じた環境を作ることで、仮想環境毎にインストールするパッケージ構成を変更したりできます。1台パソコンの中にたくさんの開発環境を作成して、必要に応じてオンオフするイメージです。
Activateというファイルは、この、「Pythonの仮想環境」を有効化するときに実行するスクリプトのようです。最近勉強しているflask開発でも使っている「venv」という仮想環境パッケージでも同様に「Activate」を実行することで任意の仮想環境をオンにします。
condaでのプログラム実行
バッチファイルに、
python program.py
※program.pyは任意
を記述すれば、無事pythonプログラムが実行されました。
バッチファイル全体
cd 実行するプログラムの階層 call C:\\Users\\ユーザー\\Anaconda\\Scripts\\activate.bat python program.py
cdは、コマンドプロンプトで階層移動するコマンドです。
callで、conda環境を有効にします。1で説明したactivate.batを呼び出しています。
最後に、pythonプログラムを実行します。
まとめ
上記バッチファイルを作成することで、anaconda環境をいちいち立ち上げなくてもanacondaで作成したpythonプログラムを一度に実行することができました。
pythonプログラムのexe化も試しましたが、ロードするモジュールによってはエラーがでたり、作成プログラム毎にexe化が結構コストかかっていたので、このような形で実行できると、開発で修正したり、ユーザー側でもすぐに実行できるというちょうどバランスの良い状態になりました。
パスを参照したりするプログラムで、そのパスが変更する可能性があったりすると、プログラムの設定機能とかを追加したり、面倒な場合もあります。プログラム直書きでシンプルにしたいとき、anaconda環境ですぐに修正可能かつ、自分以外のユーザーもすぐに実行可能、という点でいろいろ役立っています。
参考にしたサイト
https://stackoverflow.com/questions/46305569/how-to-make-batch-files-run-in-anaconda-prompt