Python3のWindows環境における手動/自動実行方法+実行形式化まとめ。
PythonのWindows環境下におけるTIPSが少ない…。実行方法についてまとめました。
昨今では人工知能・bot開発・自動化などでPythonが注目されていますが、インターネット上を検索してみても、Linux・Mac環境におけるノウハウが多くWindows環境でのノウハウが少ないように思えます。
生粋の技術者はLinuxを使うのでそれでも良いのでしょうけど、OSのシェア率は依然としてWindowsが9割を占めている状態ですので、一般のすそ野を広げるためにはWindowsのTIPSが増えてくれることを願うばかりです(ほとんどのビギナーはWindows環境を使っていると思います)。
そこで本記事ではWindows環境におけるPythonの手動/自動実行方法について整理しました。
環境
- Windows 10 Pro
- Python 3.6.4
- (ライブラリ) PyInstaller 3.3.1
Windows環境でコマンドプロンプトからPythonスクリプトを手動実行する。
まずは基本になります。Pythonスクリプト(.pyファイル)をコマンドラインから手動で実行します。
最初にWindowsのメニューからコマンドプロンプトを起動します。コマンドプロンプトはWindows10の場合「Windows システムツール」の下にあります。良く使いますのでピン留めにしておくといいでしょう。
コマンドプロンプトが起動したら、Pythonスクリプト(.pyファイル)が置いてあるフォルダまで移動します。
下記は例えば「U:\Z_PROGRAM\python」にプログラムが置いてある場合の事例です。※ドライブが同じ場合は1行目は不要です
1 2 3 4 5 | C:\Users>u: U:\>cdU:\Z_PROGRAM\python U:\Z_PROGRAM\python> |
以下のようにpythonコマンドでスクリプトを実行することができます。
1 | python[スクリプト名].py |
実行できない場合はディレクトリが誤っている場合があります。コマンドプロンプトで「dir」コマンドを実行して、フォルダが間違っていないかプログラムが存在するか確認しましょう。
batファイルを作成してPythonスクリプトを手動実行する(バックグラウンド実行可能)。
上述のコマンドラインの内容をバッチファイル(.bat)に記述しておき、ダブルクリックまたは後述のタスクスケジューラーで実行させることもできます。
デスクトップ・フォルダ等の適当な場所で右クリックし、「新規作成」→「テキストドキュメント」を選択します。
作成されたテキストファイルを拡張子ごとリネームして「XXX.bat」といったファイル名に変更します。
そしてバッチファイルをエディタで開き、コマンドを書いて保存すればOKです。ポイントは全てフルパスで記述することです。この「XXX.bat」ファイルをダブルクリックするだけでPythonスクリプトを実行可能となります。
1 2 3 | u: cdU:\Z_PROGRAM\python C:\Python\python.exe test.py |
「C:\Python\python.exe」ではなく「C:\Python\pythonw.exe」を実行することでバックグラウンド実行することが可能です。WINDOWSでコマンドプロンプトを表示させたくない場合は「pythonw.exe」を利用しましょう。
Pythonスクリプトを配布可能な実行形式(exe)に変換して手動実行する(PyInstaller)。
また、.pyファイルを.exeファイルに変換することもできます。実行形式(exe)に変換するメリットは以下です。
- コマンドに抵抗感がある人でも、exeファイルをダブルクリックするだけで手軽にスクリプトを実行できる
- スクリプトのソースコードを隠蔽化して、知り合いなどに配布することができる
変換にはPyInstallerというライブラリを使います。pip installで事前に導入しておく必要があります。
1 | pip install pyinstaller |
PyInstallerを用いた実行形式化(exe化)は非常に簡単です。コマンドプロンプトで以下のように実行するだけです。exe化には少し時間がかかりますのでじっくり待ちましょう。
1 2 3 | u: cdU:\Z_PROGRAM\python pyinstaller test.py--onefile--noconsole |
完了すると「dist」という名前のフォルダが自動作成されていますので、その中に作成されたEXEファイルが出力されています。
パラメータの「–noconsole」を外すと、実行時にコマンドプロンプトの黒い画面が表示されるようになります。実行していることを分かりやすくしたい場合は「–noconsole」を外してください
PyInstallerの他にもPythonスクリプトを実行形式に変換することができるライブラリがいくつか存在します(py2exe、cx_Freeze等)。どのライブラリもPythonのバージョンに制約がついたり、機能に制限がある場合があります。自分の使っている環境に合ったものを使うのが良いと思います。
個人的にはPython 3.6の場合、PyInstallerが良いのではないかと思います。
.bat化/.exe化したPythonスクリプトをタスクスケジューラーで自動実行する。
Pythonを使った自動化では、Windows環境ではタスクスケジューラーを活用するのが最も一般的だと思います。
上述した手法でバッチファイル化(.bat化)・実行形式化(.exe化)したファイルを用意しておけば、簡単に自動実行条件に基づいて自動化することが可能です。
タスクスケジューラはWindows10の場合「Windows 管理ツール」の下にあります。
タスクスケジューラを起動したら、右側のメニューから「タスクの作成」を選択します。
まずタスク名を設定します。何でもよいのですが、後で自分が見たときに判別できる名前を付けておきましょう。ここで設定した名前が、タスクスケジューラ一覧に表示されます。
次に「トリガー」タブをクリックし、「新規」ボタンをクリックします。
こちらで自動実行する条件を設定することができます。毎日実行したり、特定の曜日だけ実行したり、XX時間毎に繰り返し実行したり等、様々なタスク実行条件を指定可能です。
例えば、毎日8時に実行したい場合は以下のような設定になるかと思います。
次に「操作」タブをクリックし、「新規」ボタンをクリックします。
プログラム/スクリプトの欄に、上述の方法で作成したバッチファイル(.bat)・実行形式ファイル(.exe)を指定します。設定したらOKをクリックします。
最後に設定を確認し、メインのダイアログでOKをクリックすれば、タスクスケジューラ一覧にタスクが追加されます。
これで定刻にPythonスクリプトを自動実行することができるはずです。もちろん実行時間にPCを起動していなければ実行することができませんのでご注意ください。