はじめに
Visual Studio Code で Python のプログラムを記述し "Hello Python!" と表示をさせた。
※Visual Studio Code で Python のプログラムを書いてみた(その1)
これで、あとは コードを書いていくだけ・・・と思っていたら 次の2点でハマってしまった。
- Anaconda (Python用 プラットフォーム) が使えない
- [import serial] という単純な ライブラリー が読み込まれない
※2. の原因は、1. であった。
職場では、何も問題なくVisual Studio Code 上で Anaconda が問題無く動作をしているにも関わらず
自宅では、同じ様に環境を構築したはずなのに 思った様に動いてくれない。
数日、悩んだ結果 対策が分かった (疑問もあるが・・) ので 記述する。
尚、職場と自宅で 異なるのは 職場(Windows10) / 自宅(Windows11) であり もともと
Windows11 に Update する以前に Visual Studio Code / Anaconda 共々インストールを
していたので無関係と思われる。
1.Anaconda (Pyton用 プラットフォーム)を選択する
<Ctrl> + <Shift> + <P> で コマンドパレットを開き[Python:インタープリンターを選択]において
使用するインタープリターを選択する。
※Anaconda を選択する。(職場ではAnacondaを使っている人が多いという理由)
以前、訳も分からず Anaconda他 Python の複数のパッケージをインストールしている。
故に事前にAnacondaをPC上にインストールする必要があるのかとも思う。
2.Anaconda を動作する
インタープリンターを選択しただけでは、VS Code は下記エラーを出す。
そこで <Ctrl> + <Shift> + <P> で コマンドパレットを再度開き
[ターミナル:規定のプロファイルを選択] において [Command prompt C:\WINDOWS\SYSTEM32\cmd.exe]を選ぶ
ここで、一度 Visual Studio Code を閉じ 再起動をする。
再起動後 [ターミナル] - [新しいターミナル] を選ぶ
すると 以下の様に Anaconda Prompt(Anaconda3) が起動する
尚、ターミナルのプログラムの指定を出来るのは、 Visual Studio Code の左下 歯車から
[設定] を選び、[機能] - [ターミナル] - [settings.jsonで編集] において 下図の様な設定に
なっている場合である。
{
"C_Cpp.updateChannel": "Insiders",
"python.defaultInterpreterPath": "C:\\Users\\xxxx\\anaconda3\\python.exe",
"terminal.integrated.defaultProfile.windows": "Command Prompt",
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
"Git Bash": {
"source": "Git Bash"
},
"base": {
"path": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
}
}
}
3. Python で Serial 通信を行う準備
ここまでで、ようやく Visual Studio Code で Pythonが使える様になった。
シリアル通信を行うためには、Visual Studio Code のターミナル上で下記を実行
pip install pyserial
4.プログラムを作成
下記のプログラムは、Digital Multi Metter(HIOKI DMM7276) を USB接続 <仮想シリアルポート(COM8)>
で PCと接続させコマンド [*IDN?] で、 測定器識別情報を取得す簡単なプログラム
[HIOKI,DM7276-01,211126428,V1.07] と応答がある。やっと出来た!
import serial
SerDevice = serial.Serial('COM8', 115200, timeout=1)
SerDevice.write("*IDN?".encode())
#end of Command
SerDevice.write(b"\r")
L_RecieveData=SerDevice.readline()
RecieveData = L_RecieveData.decode()
print(RecieveData)
SerDevice.close()
思うこと
検索をして調べてみると、多くの人が同じ様な問題に遭遇していることが分かる。
でも、そこで示されている解決方法のどれも自分には、当てはまらなかった。
Anaconda と Visual Studio Code のインストール順やPlatformIOというマイコン用のIDE
を入れ Python だけでなく 複数の環境で使っているためなのであろうか。
にもよるのだろうか?
それにしても・・・もっと素直に動いて欲しいと思う。なぜ、職場では問題無く動作する?
ふと思いましたが、もしかして 私の場合 Windows11 にしたため Power Shell の権限が変わり
Anaconda をはじく様になったのだろうか?
Power Shell の権限を変えると素直に動くのでしょうか?
また、調べてみます。
☆2021年12月28日(火) 午前10時40分 初版(Ver1.00) 作成
☆2021年12月29日(水) 午後 0時15分 Ver1.10:言語指定してカラーライズを行った
☆2021年12月30日(水) 午後 4時35分 Ver2.00:全体を見直し書き直し
☆2023年09月06日(水) 午後 3時10分 Ver2.01:間違い修正