変わりモノがいい!

変わりモノには価値がある・・・ハズ?

Pythonのバージョンに悩まされました。

動かない原因は、Pythonのバージョンにありました。

雑誌Interfaceの記事の内容に従ってVisual studio code上でRTL-SDRを動かそうとしてきました。
簡単なはずの作業なのに動かない。
必要なモジュールがインストールできないということで数日悩まされました。
原因は、pythonのバージョンと複数バージョンの共存にありました。
どういう現象に出くわして対応するために何をしたかを備忘録として記載しておきます。
スマートなやり方ではありませんが、まずは動かすことはできました。

f:id:ken2017:20211015164907p:plain

何が起きたの?

僕はアメリカにいるときからpythonのコード開発はAnaconda上でjupyterを使ってやっていました。
日本に帰ってきてからも同じ環境を作ってpythonを触っています。
今回参考にしているInterfaceの記事ではVisual studio codepythonの開発をやっており、いい機会なのでプラットフォームを変えてみることにしました。
これが悩みの始まりになりました。

f:id:ken2017:20211015165807p:plain f:id:ken2017:20211015165821p:plain

f:id:ken2017:20211015170028j:plain

Anacondaにインストールしているpythonのバージョンは3.6でInterfaceに書いてあったのが3.8でした。
Visual studio codeをインストールした後に何も悩まずにpython3.8をインストールしました。
3.8をインストールする際には、インストール画面の下にあるパス設定有無のチェックボックスも指定通りチェックマークを付けパス設定が自動でされるようにしました。
インストールは無事終わりvscode(visual studio code)を起動し、雑誌のサイトからサンプルコードをダウンロードしたものを起動しました。

www.cqpub.co.jp

ところがエラーが出ます。
悩みながら調べた結果、なんと動いているのはpython3.6で3.8ではない。
???何故?と調べていくと、windowsのパス設定もならないといけないようでシステム環境変数に追加で設定を行いました。

qiita.com

これでOKと思いコードを動かすと、またダメです。
調べると、まだpython3.6が動いています。
解決方法を探す中で下の記事を見つけました。
windowsのシステム環境変数に追加するだけではダメでvscodeの中の設定変更が必要とのことでした。

kamesuke-blog.com

ここで要注意なのは、上の記事に書いてあることを単純にやるとパスが追加されるだけで既存のパスは有効で結果的にpythonのバージョンの切り替えができないということです。
上の作業を行うときはcurrent設定データを見つけて、それを編集する必要があります。
これが判るまでに結構な時間を使ってしまいました。
これでやっと所望のバージョンであるpython3.8を動かすことができました。
では、ということでサンプルコードを動かすと、またまたエラー発生。
ライブラリがないと出ます。
importができないということです。
それでは、と、必要なライブラリをインストールしようと例えば下のようなコマンドを入力しました。
pip install scipy
するとzipファイルがダウンロードされ、その中にはソースファイルが入っているようでダウンロードに続いてビルドが始まりました。
ビルド終了を待っていると、またまたエラー発生。
色々と試みましたがダメでした。
調べてみるとpythonのバージョンが3.7なら簡単にインストールできるとのことでpython3.7を急遽インストールしました。

qiita.com

これで大丈夫だろうと
pip install scipy
と入力すると、同じ現象でビルドにおいてエラーが発生しました。
どうも他のバージョンが影響しているようで、Anacondaを使うときに悩むのを覚悟のうえでpythonの他のバージョンである3.6と3.8をアンインストールしました。
手順は下の記事を参考にしました。

gammasoft.jp

これでpythonは3.7しかいんすとーるしていない状態です。
上手く動いてくれと祈って以下を入力しました。
pip install scipy
結果は、
やっと上手くインストールできました。
zipファイルではなくwhlファイルがダウンロードされてインストールに使われていました。
長かった。
動いたサンプルがコチラ。
画面の中央上段にコードがあり、
画面の中央下段に処理結果であるRTL-SDRで受信したI-Q信号(複素数のベクトル)が並んでいます。

f:id:ken2017:20211015174512p:plain

それをグラフ化したのがコチラ。

f:id:ken2017:20211015174851p:plain
やっと動きました。
これから調整して最適な状態を見つけ、その上で、本命であるHackRF oneで同じコードを動かし、なんとか使える状態にしていきたいと思います。
ということで、今日はここまで。

では、また。

 

プライバシーポリシー お問い合わせ