はじめに

Deep Learningをはじめとする昨今のAIブームで、いざPython環境を構築して必要なパッケージを入れて・・・とやっているうちにあれよあれよと時間が過ぎてしまうのがつらかったので(ショボいですが)スクリプトにまとめて自動化しようという試みを始めたのでまとめようと思います。環境構築の時短の参考になればと思います。

本記事では、pyenv1とpyenv-virtualenv2でシステムの環境を汚さず、カジュアルに作っては壊しができるPython環境を導入し、そこにpipで必要なパッケージを入れるようにします。また、VSCodeのPython拡張機能を用いて、Jupyter Notebookの形式でPythonを実行できるようにします。これらの環境を全てWindowsのWindows Subsystem for Linuxで実行しているUbuntuで構築します。

インストールスクリプト

環境構築のスクリプトを作成しました。
GitHubにスクリプトをアップしています。issueなど歓迎です。

このスクリプトは、引数に(pyenv-virtualenvで作成する)python環境の名前をとりますので以下のように実行します。

./setup_env.sh env_name

env_nameをつけないとエラーで終了します。
また、aptでいくつか必要なパッケージをインストールするので途中でrootパスワードを求められます。
実行したら終わるまでしばらく待ちましょう。

pipで以下のパッケージもインストールされます。
全ての動作を確認していないので、もしかしたらうまく動かないことがあるかもしれません・・・

    • numpy

 

    • six

 

    • matplotlib

 

    • pandas

 

    • opencv-python

 

    • opencv-contrib-python

 

    • Pillow

 

    • jupyter

 

    上記に依存するパッケージ(pipで自動的にインストールされる)

完了すると、pyenv-virtualenvで新しいpython環境が作成され、それが適用されます(pyenv global env_nameが行われます)。
なお、pyenvを利用するため、~/.bashrcに設定が追加されます。

VSCodeでJupyterを使う

pipでJupyterをインストールすると、VSCodeからJupyterNotebookを開いて結果を見ながらコードをかけます。

WSLへの接続+Python拡張機能インストール

まずは、Remote DevelopmentでWSLに接続します。
VSCodeの左下の”><“←こんなマークのボタンを押してWSLに接続します。
Remote Developmentについては手前味噌で恐縮ですが、別の記事3にまとめていますのでそちらを参照いただければ幸いです。

続いて拡張機能Pythonをインストールします。

python_ext.png

これでVSCodeでJupyter Notebookを開くことができます。また、Pyenvによるバージョン変更も可能です。簡単な使い方を以下に説明します。

新規Notebookを作成

VSCodeでcmd+shift+pでコマンドパレットを開き、”jupyter”と入れるといくつかコマンドが出てくるので、”Python: Create New Blank Jupyter Notebook”を選択します。

create_new_note.png

すると新規Notebookが作成されます。画像はHello worldを書いています。

jupyter_run.png

Pyenvで環境を切り替える

VSCodeの左下あたりに現時点のPythonのバージョンが表示されるので、これをクリックするとバージョンを変更できます。

pyenv_button.png

一覧から使いたいPythonの環境を選択できます。Jupyter Notebookを使うときはpipでjupyterをインストールした環境を選びます。

choose_python.png

おわりに

一通りPyenv+Jupyter+VSCodeでPython環境を立ち上げる方法をまとめてみました。
深層学習などのプログラミングをする場合は、Pytorch4など自分の使いたいものをインストールしていけばOKです。

pyenv, GitHub ↩

pyenv-virtualenv, GitHub ↩

VSCodeのRemote Developmentを使ってみる ↩

Pytorch, GET STARTED ↩

广告
将在 10 秒后关闭
bannerAds