Pythonで遊んでみようと思って、有名なJupyter NotebookかVSCodeのどちらをメインに使おうか考えていたら、こちらの記事に出会った。
心惹かれたのは、
- .pyもJupter Notebookのように扱えること
- .ipynbはgitで管理できなくても、.pyならgitで管理できること
環境
この環境から、Pythonのインストールを含めた環境構築を行う。
ちなみに、Powershell上で
python
と打つとMicrosoft Storeがポップアップするが、このインストールは必要ない。
結論
- Anacondaをインストール。インストール時に、Pathの設定はしない
- Anaconda Promptなどで仮想環境を構築
- Anaconda Navigatorから接続したい仮想環境を選択
- Anaconda NavigatorからVSCodeを起動
※VSCode上でコードを走らせる環境の接続先は変更できるが、パッケージのインストールなど、環境自体の変更はAnaconda Navigatorで選択していたものに対してしかできない。
※Windowsのスタートメニューから開いたVSCodeではどの環境についてもパッケージのインストールなどはできない。コードの実行はできる。
Anacondaのインストール
から、Anaconda3-2022.10-Windows-x86_64.exeをダウンロード&実行。
Windowsのスタートメニューに anaconda の各ソフトが表示されるようになった。
VSCodeに接続せず、単純にAnacondaを使ってみる
Anaconda Navigatorを起動。
新しいバージョンが出ているらしいのでUpdate
Anaconda Navigatorがbusy状態だといわれるが、Yesで終了
インストールが終わると Navigator を起動するか聞かれるので、Launchをクリック
起動したNavigatorの様子。Jupyter Notebookを開いてみる。
右上のNewからPython3を選択して、新規スクリプトを作ってみる。
import sys
sys.version_info
をはじめのセルに記入して実行。
Pythonのバージョンが3.9.13であることがわかる。
Anaconda Promptで仮想環境を作ってみる
conda env list
で存在する環境のリストが得られる。初期状態ではbaseしか存在しなく、
python
を読み出すことで、そのバージョンが先ほども表示された3.9.13であることがわかる。
それでは以下のコマンドで仮想環境を構築する。
conda create --name <仮想環境の名前> python=<指定バージョン> <インストールするパッケージ?>
今回の設定はこのよう。
conda create --name env310 python=3.10 numpy
※ python=3.5では後々の、VSCodeでinteractive-1の接続先を3.5に変更する際にwin32apiをインストールできないというエラーが出たため、3.10にしている。ほかのバージョンは試していない。
ダウンロードやインストールされるパッケージが表示され、
実行するかどうかがProceed ([y]/n)?
で聞かれる。yを打つ。
改めてconda env list
で環境を確認すると、env310が追加されている。
conda activate env310
で仮想環境に接続できる。
conda env list
の*印の位置も変更されている。
pythonを起動すると、バージョンが指定した3.10.Xになっていることが確認できる。
VSCode上でスクリプトを指定した仮想環境の上で実行する
Anaconda Navigatorではなく、windowsのスタートメニューからVSCodeを開き、適当なフォルダ(今回はD:\python-test
)でターミナルを開いて、conda
を呼び出す。
Pathが通っていないと怒られる。
PS D:\python-test> conda
conda : 用語 'conda' は、コマンドレット、関数、スクリプト ファイル、または操作
可能なプログラムの名前として認識されません。名前が正しく記述されていることを確
認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してく
ださい。
発生場所 行:1 文字:1
+ conda
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (conda:String) [], CommandNotFo
undException
+ FullyQualifiedErrorId : CommandNotFoundException
PS D:\python-test>
Anaconda NavigatorからVSCodeを起動する。すると、CondaへのPathが通っている。
これ以降はすべてAnaconda NavigatorからVSCodeを起動する。
VSCodeでconda env list
を実行すると、先ほど作ったenv310
が表示される。
しかし先ほどのAnaconda Promptと異なるのは、先頭に(base)が書かれていないことである。
conda activate env310
conda env list
を実行しても、env310
環境に移行したように思える出力は得られない。
とりあえず、testcode.pyを作ってみる。
#%%
でJupyter Notebookのようになると聞いていたが、ならない。
デバックなしで実行しようとしても、拡張機能のインストールを求められ、実行することができない。
どうやら拡張機能のインストールはどうしても必要らしい。
だからMicrosoft純正のPythonをインストールする。
すると一緒に
JupyterやPylanceという拡張機能もインストールされた。
一緒にインストールするならそう書いてくれればいいのに。
ただし、変化は劇的で、#%%
の上に、セルの実行
と表示されるようになった。
拡張機能をインストールすると、ターミナルを起動するたびに
C:/Users/shiga/anaconda3/Scripts/activate
conda activate base
セルの実行
をクリックすると、そのセルが実行され、
pythonのバージョンが3.9.13であることがわかる。
.pyのファイルを開いているときだけタスクバーに表示される、Python Interpreterをクリックする。
使用可能なpythonが表示される。env310の3.10.9が含まれているから、それを選択。
しかし、testcode.pyで出力されるpythonバージョンは変わらない。
なぜなら、右上のinteractive-1
ウィンドウの接続先がbase
になっているからである。
クリックしてするとドロップダウンが現れるから、
別のカーネルを選択
をクリック。
するとenv310
が選択できるから、env310
を選択。
するとこのような警告が現れる。
env310
環境にはnumpy
しかインストールされていないから、jupternotebook用のパッケージをインストールする必要があるらしい。インストールする。
このような状況になれば、正常にenv310
に接続できている。
接続後にtestcode.py
を実行すると、バージョンが3.10.9で実行されていることが分かる。
これでコードを実行するカーネルを選択することが出来るようになった。
しかし、依然としてターミナルが接続しているのはbase
であり、env310
ではない。
VSCodeを閉じないまま仮想環境をカスタマイズする
ターミナル上ではenv310
に接続することが出来ないので、
仮想環境に足りないパッケージをインストールするときに困る。
testcode.py
に新しいセルとして、
# %%
import numpy as np
print('numpyはimportできる')
import pandas as pd
print('pandasはimportできない')
# %%
を追加する。numpy
とpandas
をインポートするコードである。
env310
環境ではnumpy
しかインストールされていないため、pandasがインポートできない。
これは、anaconda promptでenv310
環境に接続した後、
conda install pandas
VSCodeを閉じて、仮想環境をカスタマイズする
VSCode上で、接続する環境をenv310
に変えられなかったのは、Anaconda Navigatorがbase
に接続した状態でVSCodeを起動していたからである。
なお、env310
にはjupyter notebookはインストールしていないので、Anaconda Navigator上ではLaunchボタンではなく、Installボタンが表示される。
VSCodeを起動すると、デフォルトで実行されるコードが
C:/Users/shiga/anaconda3/Scripts/activate
conda activate env310
conda env list
で接続先を確認すると、env310
に接続されていることが分かる。
env310
にはまだインストールされていないパッケージであるmatplotlib
をimportしようとすると、エラーが起きる。
# %%
import matplotlib as mp
それではenv310
に接続したターミナル上で、
conda install matplotlib
を実行する。無事インストールすることが出来た。
改めて、matplotlib
をimportするセルを実行すると、エラーなくimportすることが出来る。
参考サイト