初めに
本記事は元々PDFで作成した研究室内部の資料をMarkdownに無理やり落とし込んだものです.そのため,「無駄に箇条書きされている」,「ヘッダー構成がいまいち」,「Webドキュメントとしては図が多すぎる」等などの問題点があり,「簡潔で分かりやすいQiita記事」とは程遠い状態です.その点についてはご理解下さい.
なお,ここらへんの環境構築の話はすぐに古い情報になってしまい,書かれている通りのやり方ではいずれ通用しなくなる可能性があります.この記事を参照して起こる問題については私は責任を持てませんので,本記事はあくまでも参考としていただき,実際に試すことについては自己責任でお願いいたします.この記事以外にも,同様の内容を解説しているWebページは山ほどありますので,そちらも参照すると良いかもしれません.
本記事の目的
- Windowsマシン上で,Anacondaを使わず,VSCode(エディタ)とPython(インタプリタ)のみで,Pythonを実行できる環境の構築を解説
- 有名なPython環境インストーラのAnacondaは使わない
- 使わない理由は後述
- 有名なPython環境インストーラのAnacondaは使わない
- pipenvを利用したディレクトリ完結型の仮想環境の構築方法も解説
- インストールするパッケージの管理がディレクトリ単位になるので,PC本体の実行環境を汚すことなく開発できる
- Jupyter notebookを実行する環境の構築方法も解説
- Jupyter notebookはセル単位でコードの実行・確認ができる初学者向けの有名なエディット環境
Pythonについて
Python(ぱいそん)の特徴
- 高水準汎用スクリプト言語(1行ずつ実行)
- 動的な型付け
- 機械学習・深層学習分野で目覚ましく普及
- ライブラリが豊富,情報が豊富
実行環境構築がめんどくさい場合が多い
- 本資料では高機能エディタのVisual Studio CodeからバニラのPythonを実行するような環境の構築手順を紹介
- 「とりあえずAnaconda入れとこ」は簡単だが危険
- AnacondaはPython環境の一括インストーラ(IDEからパッケージまで)
- Anaconda独自の仮想環境パッケージ管理ソフトの「conda」は,Python純正のパッケージ管理ソフトの「pip」と共存すると混乱の元になる
- condaだけで済めば良いが,pipでなければインストールできないパッケージが存在
- condaでnumpyという計算用パッケージをインストールすると,線形代数演算ライブラリ(BLAS)がOpenBLASではなくIntel MKLになり低速
Visual Studio CodeとPythonについて
VSCodeの特徴
- 汎用高機能テキストエディタ
- 開発はマイクロソフト
- 豊富な拡張機能により,あらゆるテキスト記述に適合
- C,C++,Java,HTML,CSS,MATLAB,Pythonなどなど・・・
VSCode+Python
- Pythonの統合開発環境(IDE)の機能
- 実行・デバッグ
- 一番シンプルなPython開発環境ではなかろうか
VSCode+Pythonの実行環境の構築方法
VSCodeのインストール
ダウンロード
- https://code.visualstudio.com/download/
- 各プラットフォームに合わせてダウンロード(64bit版)
インストール
- ダウンロードしたインストーラをダブルクリック
- 使用許諾契約書に同意して「次へ」
- パスはデフォルトのまま「次へ」
- プログラムグループ設定もデフォルトのまま「次へ」
- 追加タスクの選択を好みで設定して「次へ」
- 最終確認をして「インストール」
- インストール後,VSCodeが自動起動する
- 一度閉じてWindows再起動
拡張機能のインストール
日本語化の拡張機能
- Search extensionsに「Japanese」と入力し「Install」をクリック
- インストール後の画面右下のRestart Nowをクリックして再起動
- VSCode再起動後,日本語化される
VSCodeの推奨設定
Hot exit機能をオフ
Pythonのインストール
ダウンロード
- https://www.python.org/downloads/
- 各プラットフォームに合わせてダウンロード
インストール
- ダウンロードしたインストーラをダブルクリック
- 「Customize installation」をクリック
- 全項目にチェックを入れた状態で「Next」
- 「全ユーザにインストール」,「Pythonパスを環境変数に設定」を選択して「Install」
- インストール完了後「Close」
VSCode+Pythonの環境構築・実行
実際にPythonスクリプトを作成し実行してみる
- 新規フォルダ「test」を作成し,右クリックして「Codeで開く」
- Python用の拡張機能をインストール
- ファイル管理に戻り「ファイル」→「新規ファイル」でファイル作成
- 「Untitled-1」という新規ファイルが作成される
- 「ファイル」→「名前を付けて保存」で「test.py」として保存する
- 適当にプログラムを書いてみましょう
import os
path = os.getcwd()
print( "現在のディレクトリは" + path + "です" )
- 保存してF5キー(実行)を押すとデバッグメニューが表示
- ターミナル(Windows PowerShell)が表示され,その上でPython実行コマンド(「python ./test.py」的なコマンド)が実行されて結果が表示される
- おめでとうございます(うごきました)
VSCode+Pythonのデバッグ
実行中にデバッグしてみる
- Pythonスクリプト「inc.py」を新規作成し下記を入力して保存(画像中の「increment」はスペルミスして「incriment」になっていますハズカシ)
def increment(n):
return n+1
a = 3
b = increment(a)
print(a)
print(b)
VSCode+Pythonのその他の情報
- VSCodeの新規ターミナルの起動
- メニューバーの「ターミナル」→「新しいターミナル」
- ターミナルの過去の文字列(コマンドログ)を消す
- 「clear」と入力しエンター
- 対話モードのPythonインタプリタ
pipenvによる仮想実行環境の構築方法
仮想実行環境とは
- Pythonは「パッケージ」と呼ばれる追加ライブラリをインポートすることで,使える関数等が増える
- 数値計算にはnumpy,データ操作にはpandas等
- 「import numpy as np」を宣言するとnumpyの関数がnp.xxxという形で使える
- C言語の#includeでヘッダーファイルを読み込むのと同じ概念
- Pythonでは「pip」と呼ばれるパッケージ管理ソフトを使って各パッケージをインストール・アンインストールする
- ターミナルで「pip install numpy」を実行すれば,numpyがインストールされる
- 後述のバージョンを指定していないので最新版のnumpyが入る
- ターミナルで「pip list」を実行すれば,現在インストールされているパッケージ一覧が表示される
- 「pip uninstall numpy」でnumpyをアンインストールできる
- ターミナルで「pip install numpy」を実行すれば,numpyがインストールされる
- Pythonはオープンソースソフトウェアなので,各パッケージも追加機能が次々開発され,バージョンが上がっていく
- あるパッケージは他のパッケージの機能を参照したりする(つまり両方のパッケージがインポートされていないと動かない)ため,あるパッケージのバージョンを上げると運が悪い場合他のパッケージが動かなくなることがある
- 例:「バージョン3.6のPython」に「バージョン1.14.1のnumpy」と「バージョン0.22.0のpandas」をインポートした実行環境なら動くよ!
- 言い換えれば「それ以外の実行環境では動かないかもよ!」
- 例:「バージョン3.6のPython」に「バージョン1.14.1のnumpy」と「バージョン0.22.0のpandas」をインポートした実行環境なら動くよ!
- あるパッケージは他のパッケージの機能を参照したりする(つまり両方のパッケージがインポートされていないと動かない)ため,あるパッケージのバージョンを上げると運が悪い場合他のパッケージが動かなくなることがある
- pipでインストールしたパッケージなら実行環境を出力可
- 「pip freeze」でインストール済のパッケージをrequirements.txtというテキストファイルで出力可能
- 別のPC等で実行環境を再現したい場合は,上記のテキストファイルをコピーし,「pip install –r requirements.txt」を実行すれば,まとめてインストールできる
- 必要なパッケージを必要になったタイミングでpipインストールしているとどんどん増える(気が付けば200パッケージ等)
- プロジェクトに必要最小限のパッケージが分からなくなる
- 実行環境(Python本体や各パッケージのバージョン)を簡単に切り替えることができれば,自分の現在の実行環境を壊すことなく,他者の実行環境をすぐに構築できて便利
- 「仮想環境(virtual environment)」という概念が登場
- 実行環境を「仮想的に」管理・構築
- 例えば,Python本体や各パッケージのインストールをPC本体ではなくディレクトリ内で完結した形で管理可能
- ディレクトリを変えれば環境が変わるので,同じPCでプロジェクト毎に異なる実行環境を構築できる
- 他のPCに移すときも,ディレクトリごと(あるいはパッケージ管理情報を)渡せばOK
- 例えば,Python本体や各パッケージのインストールをPC本体ではなくディレクトリ内で完結した形で管理可能
- 仮想環境用パッケージ管理ソフトは戦国時代(ありすぎ)
- 「conda(Anaconda環境のみ)」,「virtualenv」,「venv」,「pipenv」,…
- 実行環境を「仮想的に」管理・構築
- 本記事では恐らく一番スタンダードな「pipenv」による仮想環境構築を紹介
- pipでPC本体にインストールするのは「pipenv」だけ
- 他はpipenvで全てディレクトリ(プロジェクト)毎にインストール
pipenvのインストールと初期設定
インストール
- VSCodeを起動
- メニューバーの「ターミナル」→「新しいターミナル」
- 「pip install pipenv」を入力し実行
- 色々と文字がでてpipenvがインストールされる
- 「pip list」で確認
- pipenv以外にもいくつかの必要なパッケージが入る
- (2021年4月15日追記)もしこのときにPathに関するエラー(「ここにインストールしたけど,ここPathが通っていないよ」的な内容)が出た場合は,pipenvのインストール先のPathを環境編集の「システムの環境変数」中のPathの中に値としてインストール先のPathを追加しなければならない.昔はall usersでPythonをインストールしていればこの問題は無かったが,今はall usersでPythonをインストールしたときにこの問題が発生するっぽい.pipenvのPathは「C:\Users\【ユーザ名】\AppData\Roaming\Python\Python【バージョン】\Scripts」のような感じになる
初期設定
- pipenvは,デフォルトでは仮想環境ファイル(インストールしたパッケージ情報)をユーザーホーム配下に格納
- ディレクトリ(プロジェクト)毎に仮想環境を作りたい場合は環境変数を変更する
- ディレクトリ(プロジェクト)毎に仮想環境を作りたい場合は環境変数を変更する
- 念のためVSCodeの仮想環境のディレクトリ設定を確認
pipenvによる仮想環境の構築・実行
実際に仮想環境でPythonをインストール・実行してみる
- 新規フォルダ「envTest」を作成し,右クリックして「Codeで開く」
- 新規ターミナルを起動し「pipenv --python 3.7」を実行
- 「envTest」内でファイル「test.py」を新規作成し,VSCodeで開く
- どのPythonを使うか選択のメッセージが表示される
- 仮想環境(ディレクトリ直下)のインタプリタを選択
- 仮想環境での実行準備が完了
仮想環境にパッケージを追加してみる
- numpyをインストールするには「pipenv install numpy」を実行
- numpyを使うスクリプトを実行
- numpyがインストールされていなければエラーが出るが・・・?
import numpy as np
A = np.array([ [1,2], [3,4] ])
B = np.array([ [0,1], [1,0] ])
C = A@B
print(f"行列CはAとBの行列積であり,結果は\n{C}\nです。")
仮想環境からパッケージを削除してみる
- 「pipenv uninstall numpy」で仮想環境からアンインストール
- numpyを使うスクリプトを実行
他環境からの実行環境の再現
- requirements.txtからの環境再現
- プロジェクトディレクトリにrequirements.txtを入れて「pipenv install –r ./requirements.txt」を実行
- PipfileまたはPipfile.lockからの環境再現
- プロジェクトディレクトリにPipfileを入れて「pipenv install」または「pipenv install --dev」(開発用パッケージもインストール)
- プロジェクトディレクトリにPipfile.lockを入れて「pipenv sync」または「pipenv sync --dev」 (開発用パッケージもインストール)
仮想環境にインストールされているパッケージ一覧
- Pipfileをcatやテキストエディタで見る
- バージョン指定無しでインストールしたパッケージで,実際にインストールされたバージョン等の詳細はPipfile.lockにある
注意点
- 仮想環境のあるディレクトリ内のPythonファイルを右クリックメニューからVSCodeで開くと,仮想環境インタプリタが選べない
- ファイルではなく,まずディレクトリをVSCodeで開き,その後にVSCode上でPythonファイル開けば仮想環境インタプリタが選択可能
Jupyter notebookの実行環境の構築方法
Jupyter notebookとは
Jupyter notebook(じゅぱいたーのーとぶっく)
- ノートブックという形式のファイルにPythonスクリプトを記述
- セル毎の実行やプロットの描画などが可能で分かりやすい
- スクリプトを書いてすぐに実行し結果を確認可
- 昔はiPython notebookという名称だった
- ノートブックファイルの拡張子(.ipynb)にその名残がある
Jupyter notebookのシステム
- 純正のJupyter notebookはローカル(又はリモート)サーバを立ちあげ,ブラウザで接続することでノートブックの編集・実行等ができる
- 2019年10月より,VSCodeのPython拡張機能(p.27でインストールしたもの)がJupyter notebookをネイティブサポート
- 本記事では,pipenvで作成する仮想環境にJupyter notebookをインストールし,ノートブックファイルの作成・実行までを解説
Jupyter notebookのインストール
仮想環境でJupyter notebookをインストールしてみる
- 新規フォルダ「jupyTest」を作成し,右クリックして「Codeで開く」
- 新規ターミナルを起動し「pipenv --python 3.7」を実行
- 続いてターミナルで「pipenv install jupyter」を実行
仮想環境でJupyter notebookを実行してみる
- Ctrl+Shift+Pを押下し,VSCodeの「コマンドパレット」を表示
- コマンドパレットに「Python: Select」と入力し表示される「Python: Select Interpreter to start Jupyter server」をクリック
- jupyTest直下の仮想環境のPythonを選択
- キャッシュに残っている他のディレクトリのPythonも見えることがあるので注意(パスをよく確認して選択すること)
- 画面左下のインタプリタ表示がjupyTestのPythonになればOK
- Ctrl+Shift+Pを押下し,VSCodeの「コマンドパレット」を表示
- コマンドパレットに「Python: Create」と入力し表示される「Python: Create New Blank Jupyter Notebook」をクリック
- 新しいノートブックが作成される
- Ctrl+Sで「test.ipynb」という名前を付けて保存
- スクリプトを記述し,Shift+エンターでそのセルを実行
- Jupyterの変数はセルごとではなく,複数のセルにまたがっている点に注意
最後に
Pythonは簡単な言語ですが,Anacondaを避けるとなると環境構築が大変です.また,Webで検索するとAnacondaの記事ばかり出てくるため,マイナス検索をして情報収集する等のめんどくささがあります.
VSCodeは,2020年3月現在,Microsoftが頑張って開発していますし,今後も発展が望めます.従って,本記事で取り上げた実行環境が比較的シンプルで良い選択肢かと思います.
但し,ここで解説した内容も,VSCodeのメジャーアップデート等でソフトウェアが変われば大きく変わるので注意してください.
以上