Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
25
Help us understand the problem. What are the problem?

Windowsマシン上でVisual Studio Codeとpipenvを使ってPythonの仮想実行環境を構築する方法(Jupyter notebookも)

初めに

本記事は元々PDFで作成した研究室内部の資料をMarkdownに無理やり落とし込んだものです.そのため,「無駄に箇条書きされている」,「ヘッダー構成がいまいち」,「Webドキュメントとしては図が多すぎる」等などの問題点があり,「簡潔で分かりやすいQiita記事」とは程遠い状態です.その点についてはご理解下さい.

なお,ここらへんの環境構築の話はすぐに古い情報になってしまい,書かれている通りのやり方ではいずれ通用しなくなる可能性があります.この記事を参照して起こる問題については私は責任を持てませんので,本記事はあくまでも参考としていただき,実際に試すことについては自己責任でお願いいたします.この記事以外にも,同様の内容を解説しているWebページは山ほどありますので,そちらも参照すると良いかもしれません.

本記事の目的

  • Windowsマシン上で,Anacondaを使わず,VSCode(エディタ)とPython(インタプリタ)のみで,Pythonを実行できる環境の構築を解説
    • 有名な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のインストール

ダウンロード

インストール

  • ダウンロードしたインストーラをダブルクリック image.png
  • 使用許諾契約書に同意して「次へ」 image.png
  • パスはデフォルトのまま「次へ」 image.png
  • プログラムグループ設定もデフォルトのまま「次へ」 image.png
  • 追加タスクの選択を好みで設定して「次へ」
    • コンテキストメニューに[Code で開く]を追加すると,右クリックで起動できるので便利 image.png
  • 最終確認をして「インストール」
    • インストール後,VSCodeが自動起動する
  • 一度閉じてWindows再起動 image.png

拡張機能のインストール

  • 画面左の一番下のアイコンが拡張機能関係 image.png

日本語化の拡張機能

  • Search extensionsに「Japanese」と入力し「Install」をクリック image.png
  • インストール後の画面右下のRestart Nowをクリックして再起動 image.png
  • VSCode再起動後,日本語化される image.png

VSCodeの推奨設定

Hot exit機能をオフ

  • ファイル未保存でもVSCodeを終了できる機能(混乱の元) image.png
  • 設定タブの「設定の検索」に「hot exit」と入力し「off」に設定 image.png

Pythonのインストール

ダウンロード

  • https://www.python.org/downloads/
  • 各プラットフォームに合わせてダウンロード
    • Pythonのバージョンは3.6.10か3.7.6にする方が無難(2020年3月現在)
    • 新しいとPythonのライブラリやパッケージが対応していない可能性 image.png
    • x86-64(64bit版)なら何でも良いが,executable installerを選択してダウンロード
      • LinuxやMacの場合は専用のものを選択 image.png

インストール

  • ダウンロードしたインストーラをダブルクリック image.png
  • 「Customize installation」をクリック image.png
  • 全項目にチェックを入れた状態で「Next」 image.png
  • 「全ユーザにインストール」,「Pythonパスを環境変数に設定」を選択して「Install」
    • 全ユーザにインストールしないとpipenvでパスが通らずこける) image.png
  • インストール完了後「Close」

VSCode+Pythonの環境構築・実行

実際にPythonスクリプトを作成し実行してみる

  • 新規フォルダ「test」を作成し,右クリックして「Codeで開く」 image.png
  • Python用の拡張機能をインストール image.png
  • ファイル管理に戻り「ファイル」→「新規ファイル」でファイル作成 image.png
  • 「Untitled-1」という新規ファイルが作成される image.png
  • 「ファイル」→「名前を付けて保存」で「test.py」として保存する image.png
  • 適当にプログラムを書いてみましょう
test.py
import os
path = os.getcwd()
print( "現在のディレクトリは" + path + "です" )

image.png
- 保存してF5キー(実行)を押すとデバッグメニューが表示
- 「Python File」をクリック(あるいはそのままエンター)
image.png
- ターミナル(Windows PowerShell)が表示され,その上でPython実行コマンド(「python ./test.py」的なコマンド)が実行されて結果が表示される
image.png
- おめでとうございます(うごきました)

VSCode+Pythonのデバッグ

実行中にデバッグしてみる

  • Pythonスクリプト「inc.py」を新規作成し下記を入力して保存(画像中の「increment」はスペルミスして「incriment」になっていますハズカシ)
inc.py
def increment(n):
    return n+1

a = 3
b = increment(a)
print(a)
print(b)

image.png
- F5→エンターで実行すると結果が表示される
image.png
- エディタの行番号の左側をクリックしブレイクポイントを設置
image.png
- F5→エンターで実行するとブレイクポイント直前まで実行される
image.png

VSCode+Pythonのその他の情報

  • VSCodeの新規ターミナルの起動
    • メニューバーの「ターミナル」→「新しいターミナル」
  • ターミナルの過去の文字列(コマンドログ)を消す
    • 「clear」と入力しエンター
  • 対話モードのPythonインタプリタ
    • VSCodeのターミナル(Windows PowerShell)上で「py」と打つと対話モードのPythonインタプリタが起動
      • 1行ずつ実行できるのでちょっとした確認などに便利 image.png
      • 対話モードは「exit()」で終了

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をアンインストールできる
  • Pythonはオープンソースソフトウェアなので,各パッケージも追加機能が次々開発され,バージョンが上がっていく
    • あるパッケージは他のパッケージの機能を参照したりする(つまり両方のパッケージがインポートされていないと動かない)ため,あるパッケージのバージョンを上げると運が悪い場合他のパッケージが動かなくなることがある
      • 例:「バージョン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
    • 仮想環境用パッケージ管理ソフトは戦国時代(ありすぎ)
      • 「conda(Anaconda環境のみ)」,「virtualenv」,「venv」,「pipenv」,…
  • 本記事では恐らく一番スタンダードな「pipenv」による仮想環境構築を紹介
    • pipでPC本体にインストールするのは「pipenv」だけ
    • 他はpipenvで全てディレクトリ(プロジェクト)毎にインストール

pipenvのインストールと初期設定

インストール

  • VSCodeを起動
  • メニューバーの「ターミナル」→「新しいターミナル」
  • 「pip install pipenv」を入力し実行 image.png
    • 色々と文字がでて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」のような感じになる Untitled.png

初期設定

  • pipenvは,デフォルトでは仮想環境ファイル(インストールしたパッケージ情報)をユーザーホーム配下に格納
  • ディレクトリ(プロジェクト)毎に仮想環境を作りたい場合は環境変数を変更する
    • 「コントロールパネル」→「システムとセキュリティ」→「システム」→左メニューの「システムの詳細設定」→「環境変数」 image.png
  • ディレクトリ(プロジェクト)毎に仮想環境を作りたい場合は環境変数を変更する
    • 「システム環境変数」の欄の「新規」をクリック
    • 変数名を「PIPENV_VENV_IN_PROJECT」,値を「true」でOK image.png
  • 念のためVSCodeの仮想環境のディレクトリ設定を確認
    • VSCodeのメニューバーの「ファイル」→「基本設定」→「設定」
    • 「設定の検索」に「python.venvPath」と入力して出てくる項目が「.venv」になっていればOK image.png

pipenvによる仮想環境の構築・実行

実際に仮想環境でPythonをインストール・実行してみる

  • 新規フォルダ「envTest」を作成し,右クリックして「Codeで開く」
  • 新規ターミナルを起動し「pipenv --python 3.7」を実行
    • 但しシステムに3.7のpythonがインストールされている必要あり image.png
  • 「envTest」内でファイル「test.py」を新規作成し,VSCodeで開く
  • どのPythonを使うか選択のメッセージが表示される image.png
  • 仮想環境(ディレクトリ直下)のインタプリタを選択
    • 当然,PC本体にインストールされているPythonを使うこともできる image.png
  • 仮想環境での実行準備が完了
    • Hello worldしてみる(F5→エンターで実行) image.png

仮想環境にパッケージを追加してみる

  • numpyをインストールするには「pipenv install numpy」を実行
    • 「pipenv install numpy==1.16」のようにバージョン指定も可能 image.png
  • numpyを使うスクリプトを実行
    • numpyがインストールされていなければエラーが出るが・・・?
test.py
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です。")

image.png

仮想環境からパッケージを削除してみる

  • 「pipenv uninstall numpy」で仮想環境からアンインストール
    • PipfileやPipfile.lockも書き換わる image.png
  • numpyを使うスクリプトを実行
    • numpyがインストールされていなければエラーが出るが・・・? image.png

他環境からの実行環境の再現

  • 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で開くと,仮想環境インタプリタが選べない image.png
  • ファイルではなく,まずディレクトリをVSCodeで開き,その後にVSCode上でPythonファイル開けば仮想環境インタプリタが選択可能 image.png

Jupyter notebookの実行環境の構築方法

Jupyter notebookとは

Jupyter notebook(じゅぱいたーのーとぶっく)

  • ノートブックという形式のファイルにPythonスクリプトを記述
  • セル毎の実行やプロットの描画などが可能で分かりやすい
  • スクリプトを書いてすぐに実行し結果を確認可
    • 初学者のPython習得や研究の実験履歴などに重宝される
    • コードの共有にも便利 image.png
  • 昔は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」を実行
    • 仮想環境にPython 3.7をインストール image.png
  • 続いてターミナルで「pipenv install jupyter」を実行
    • 仮想環境にJupyter notebookをインストール
    • 必要なパッケージが多くインストールされるので,少し時間がかかる image.png

仮想環境でJupyter notebookを実行してみる

  • Ctrl+Shift+Pを押下し,VSCodeの「コマンドパレット」を表示
  • コマンドパレットに「Python: Select」と入力し表示される「Python: Select Interpreter to start Jupyter server」をクリック image.png
  • jupyTest直下の仮想環境のPythonを選択
  • キャッシュに残っている他のディレクトリのPythonも見えることがあるので注意(パスをよく確認して選択すること) image.png
  • 画面左下のインタプリタ表示がjupyTestのPythonになればOK
    • 選択しても左下のインタプリタ表示が「Select Python Interpreter」のままになる場合は,一度VSCodeを再起動するとうまくいく可能性あり image.png
  • Ctrl+Shift+Pを押下し,VSCodeの「コマンドパレット」を表示
  • コマンドパレットに「Python: Create」と入力し表示される「Python: Create New Blank Jupyter Notebook」をクリック image.png
  • 新しいノートブックが作成される
  • Ctrl+Sで「test.ipynb」という名前を付けて保存
    • 拡張子ipynbはJupyter notebookのファイル拡張子 image.png
  • スクリプトを記述し,Shift+エンターでそのセルを実行
    • 実行結果はセルのすぐ下に表示される image.png
  • Jupyterの変数はセルごとではなく,複数のセルにまたがっている点に注意 image.png

最後に

Pythonは簡単な言語ですが,Anacondaを避けるとなると環境構築が大変です.また,Webで検索するとAnacondaの記事ばかり出てくるため,マイナス検索をして情報収集する等のめんどくささがあります.
VSCodeは,2020年3月現在,Microsoftが頑張って開発していますし,今後も発展が望めます.従って,本記事で取り上げた実行環境が比較的シンプルで良い選択肢かと思います.
但し,ここで解説した内容も,VSCodeのメジャーアップデート等でソフトウェアが変われば大きく変わるので注意してください.

以上

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
25
Help us understand the problem. What are the problem?