私版 Pythonスクリプト実行環境 構築方法


0. はじめに

令和元年5月からお世話になっている、私の新しい職場は、VBAが大好きな集団だったのですが、徐々にPythonスクリプトを布教していこうと目論んでいます。

今回は、あなたのPCで、Pythonスクリプトが実行できるようにするには、何をすればいいのかを説明しようと思います。

前提条件

私のPCは、Windows 10 Pro 64ビット バージョン1809 です。Pythonスクリプトは、Mac、Linuxでも動作しますが、ここでは Windows の話に限定します。

1. Pythonのインストールに、Chocolateyを使う

Chocolateyは、Windows上のオープンソースアプリケーションを一括インストール&管理できるツールです。私流としては、Chocolatey経由でPythonをインストールします。Pythonの公式インストーラーを使えば一発で済むものを、なぜ話をややこしくするのかといえば、(1) バージョンがあがったときの更新がラクというのと、(2) 他にもインストールしてほしいアプリケーションがある、という2点の理由によります。

まずは、管理者として実行されたPowerShellを開くことから

  1. 画面左下のウィンドウズアイコンの右にある検索窓に powershell とタイプします
  2. 最も一致する検索結果に Windows PowerShell が登場しますので、右クリックします
  3. ショートカットメニューの中から「管理者として実行」をクリックします
  4. ウィンドウズが確認ダイアログを出すので「はい」と答えます
  5. 管理者として実行されたPowerShellが登場します

次に、Chocolateyのインストールスクリプトを実行する

  1. PowerShellはそのままに、ブラウザで https://chocolatey.org/ を開く
  2. トップメニューの Install をクリックする
  3. Installing Chocolatey > Install with PowerShell.exe > Now run the following command
  4. そこにある1行コマンドをコピーして、PowerShellに張り付けて実行する

最後に、Chocolateyがインストールされたことを確認する

  1. 実行したコマンドが終了したら、いったんPowerShellを閉じる
  2. もう一度、管理者としてとして実行されたPowerShellを開く
  3. chocoとタイプして、エラーが発生しなければ、Chocolateyは無事インストールされています

Chocolateyでよく使うコマンド一覧

chocolateyを使うときは、常に「管理者として実行されたPowerShell」を使います

管理者として実行されたPowerShell

# パッケージをインストールする
choco install <package-name> -y

# パッケージをアンインストールする
choco uninstall <package-name> -y

# インストール済みパッケージの一覧を出す
choco list -lo

# インストール済みパッケージから更新可能なものを探す
choco outdated

# インストールしたパッケージを全てアップデートする
choco update all -y
  • -yオプションをつけると、実行直前に出る「本当に〇〇しますか?」という質問に、「はい」と答えたことになります。質問に答える必要がなくなります
  • -loオプションは、--local-onlyオプションと同じです。これを付け忘れると、インストール可能なパッケージをすべて表示しようとするので、大変なことになります

2. Chocolateyを使って、Pythonをインストールする

いったんChocolateyが使えるようになったら、Pythonのインストールは簡単です。「管理者として実行されたPowerShell」の中で、以下の一行を実行するだけです

管理者として実行されたPowerShell

choco install python -y

Pythonがインストールされたことを確認する

Pythonを動かすのに「管理者として実行されたPowerShell」は必要ありません。ふつうにPowerShellを起動して、以下のコマンドを叩いてみます。バージョン番号が返ってくれば、Pythonは無事インストールされています

ふつうのpowershell
python --version
pip --version

3. pipについて

pipは、Pythonで使うパッケージの管理ツールです。語弊を恐れずに言い切ってしまうならば、「Python専用のChocolatey」です。pipに「管理者として実行されたPowerShell」は必要ありません。ふつうにPowerShellを起動して使います

ここまで、あなたのPCでPythonスクリプトを動かす方法を、しっかりと説明しているのは、Pythonスクリプトを使うことで、いろんなことをラクにできるようにしようと思っているからです。いろんなことをできるようにするには、いろんなパッケージの追加が欠かせません。

pipでよく使うコマンド一覧

ふつうのpowershell
# パッケージをインストールする
pip install <package-name>

# パッケージをアンインストールする
pip uninstall <package-name> -y

# インストール済みパッケージの一覧を出す
pip freeze

# 必要なパッケージを一括インストールする
pip install -r requirements.txt

requirements.txtについて

このファイルにパッケージ名を書いておくと、一括でインストールすることができます。Pythonスクリプトを同僚に渡すときは、スクリプトファイルに加えて、そのスクリプトが使うパッケージ名を書いたrequirements.txtもつけるべきです。これで「パッケージがない!」というエラーに対処する必要がなくなります。

蛇足:インストール済みのパッケージをまとめて削除する

いろんなPythonスクリプトを動かしはじめると、インストールするパッケージがどんどん増えていくかもしれません。そんなときは、いったん綺麗にすることが可能です。

ふつうのpowershell
pip freeze > temp.txt
pip uninstall -r temp.txt -y
  • requirements.txtは、インストールするべきパッケージの一覧です。
  • pip freezeが吐き出すリストは、インストールされているパッケージの一覧です
  • pip freezeが吐き出すリストのほうが数が多くなるのは、依存関係の都合で一緒にインストールされたパッケージがあるからです
  • pip freezeが吐き出すリストを使うことで、確実にすべてのパッケージがアンインストールされます

蛇足の蛇足

あなたが開発者で、開発プロジェクトごとに、インストールされているパッケージを切り分けたいときは、venvというツールで、仮想環境を作成することになります。ここでは割愛します

4. あなたにあげる、便利なPythonスクリプトの例

このPythonスクリプトを実行すると、Chromeブラウザがヘッドレスで立ち上がって、楽天市場トップページのスクリーンショットを、同じフォルダに保存します。requirements.txtもつけてます

screenshot_rk.py
import datetime
import pytz
from selenium import webdriver
import time

print('作業を開始します。しばらくお待ちください')
t1 = time.time()

# 保存するファイル名を決める
now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
path = f'{now.strftime("%Y%m%d-%H%M%S")}_rk_top_screenshot.png'

# ブラウザを設定する
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument("--hide-scrollbars")
driver = webdriver.Chrome(options=options)

# 楽天市場のトップページを開いて、スクリーンショットをファイルとして保存する
driver.get('https://www.rakuten.co.jp/')
page_width = 1280
page_height = driver.execute_script('return document.body.scrollHeight')
driver.set_window_size(page_width, page_height)
driver.save_screenshot(path)

# ブラウザを閉じる
driver.quit()

t2 = time.time()
elapsed_time = t2 - t1
print (f'作業が終わりました。{elapsed_time:0.2f}秒かかりました')
requirements.txt
pytz
selenium

このPythonスクリプトをもらった、あなたがやるべきこと

最初の例に選んだものの、Pythonスクリプトでブラウザを動かすのは、とても高度なことなので、Chocolateyでパッケージを追加する必要があります

管理者として実行されたPowerShell
choco install selenium-chrome-driver -y

そのあとは、説明してきた通りです

ふつうのpowershell
pip install -r requirements.txt
python screenshot_rk.py

5. 最後に

VBAは、Excelがインストールされていれば実行できるのに対して、Pythonスクリプトは、これだけの準備が必要となります。ですが、できることもたくさんたくさんあるので、食わず嫌いしないでいただけたらなと思います