プログラム初心者の初投稿なので、参考にしていただく場合にはその点ご了承ください。初心者が初心者に向けた内容のつもりで記述しています。
もし誤りがございましたらご指導お願いいたします。
エディター:Visual Studio Code
仮想環境:myvenv
利用したい外部ライブラリー:pytube
実はこれまでも同様な問題が発生したことが度々あったのですが、誤魔化し誤魔化し回避してきたので、今回は徹底的に調べて自分なりの解決策のセオリーを作りたいと思ってやりました。
今回、"from pytube"でエラーが生じました。
他の外部ライブラリーで試行するも、同様の結果でした。
前提確認として、pip及びpip3両方でインストールを行い、list,freeze,showなどでインストールが成功していることも確認できています。
そこでいろいろ調べたところ、原因はカレントディレクトリ―で動いている他にも複数のPythonが存在するせいではないかとの結論に至りました。
(Visual Studio以外にも、Anacondaもインストールして動かしていること、複数のディレクトリにPythonブログラムを配置していること
などで生じているという仮説で、どのディレクトリーのどのプログラムとの関係かまでは特定することはできていないので、
間違っている可能性はあります。)
そこで、カレントディレクトリ―のパイソンが読み込むパスを指定することで解決できるだろうと推測して解決方法を探しました。
解決方法:外部ライブラリーのインストールされたフォルダ(今回はmyvenvのLibフォルダ)のpathを通す。
使うもの:標準ライブラリー sys
(インストールしたライブラリーのpathはpip show のLocationの該当箇所をコピペするだけです,蛇足ですが"R"はraw文字列です、分からない方は別途ググってください)
調べるなかでpathを通す方法もOSの環境変数Pathに追加したりする初心者としては恐怖を感じる方法などの紹介も多かったのですが、
作りたいプログラムの中で読ませたい外部ライブラリー(場合によってはモジュール)を毎回sys.path.append()で追加するこの方法が、
直感的にも理解が容易ですし、事故の起こりにくさという点でも優れているのではないかと思いました。