質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

8781閲覧

vscodeでimportできない

nanyakanya

総合スコア44

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/11/03 10:54

編集2022/11/04 03:19

前提

cVsCodeでプログラムを実行するときにRun Codeで実行するとModuleNotFoundError: No module named '**'というエラーが出力される.
ターミナルからコマンドで実行するとエラーは生じない.

環境

pipenvで作った仮想環境
pipenv, version 2022.5.2
仮想環境のpath
/Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5
仮想環境でないpythonのpath
/Users/**/opt/anaconda3/bin/python
vscodeのpythonインタープリタのpath
/Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/python
イメージ説明

試したこと

piplistでmoduleを確認した. →仮想環境内においてmoduleが存在することがわかった.
以下のコードをターミナル上とVsCode上で実行して各々のpythonのpathを出力させた.

python

1import sys 2print(sys.executable)

result

1#ターミナル上 2/Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/python 3#vscode上 4/Users/**/opt/anaconda3/bin/python

問題

以下の図のようにGUI上では正しいpythonインタープリタが選択されているが実際にはpipenv環境外のpythonインタープリタが設定されていることがわかった

イメージ説明

最後に

ターミナルからは実行できますが, vscode内で実行できず困っています.
よろしくお願います.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PondVillege

2022/11/03 11:25 編集

vscodeの右下に書かれてある使用中のインタプリタが実行に使われるものです. 仮想環境のインタプリタを選択しても動かない,ということは実行の際にRun Codeによって自動でVSCodeのターミナルに書かれるPathが仮想環境のものと異なるのではないですか?
nanyakanya

2022/11/03 11:25

説明がわかりづらくてすみません. vscodeのpyothonインタプリタとして仮想環境のインタプリタを選択した上で以上のようなエラーが出力されました.
PondVillege

2022/11/03 11:38 編集

なるほど,極論Run Codeを押下して自動記述されるPath次第かと思われます.
nanyakanya

2022/11/03 11:31

今画像を追加したのですが, vscodeの右下では画像のようにインタープリタが正く設定されているように表示されています. >極論Run Codeを押下して自動記述されるPath次第かと思われます. これは設定のjsonファイルを編集して解決するという理解でよろしいでしょうか?
PondVillege

2022/11/03 11:40

それは正しい設定だと思います. もしかしたら,pip listで実行されるpipが仮想環境のものでない可能性があります. なので,自動記述されるPathを利用してやって /Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/python -m pip install modulename とするのが良さそうです ターミナルからは実行できる.とのことだったのですが,ターミナルでもちゃんと source /Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/activate して仮想環境をアクティベートした後にモジュールimportの確認をした.ということで間違いないですか?
nanyakanya

2022/11/03 11:42

>ターミナルからは実行できる.とのことだったのですが,ターミナルでもちゃんと source /Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/activate して仮想環境をアクティベートした後にモジュールimportの確認をした.ということで間違いないですか? vsccodeのターミナルで `pipenv shell`によって仮想環境をactivateした上でpip listで確認しました
PondVillege

2022/11/03 11:45

仮想環境上のpythonで python -m pip list とやっても出てくるのでしょうか
nanyakanya

2022/11/03 11:48

python -m pip list でも同じように出力されてモジュールの存在を確認できました
PondVillege

2022/11/03 12:00

pipenv shellで仮想環境をactivateした後のpythonのPathが違う説.はどうでしょうか. which python とか python -c "import sys; print(sys.executable, sys.path)" とかのコマンドを利用してどのpythonが使われているか確認をする必要がありそうです.
nanyakanya

2022/11/03 12:11

今確認したところpathは同じでした. 現段階でわかっていることとしては 1. python -m pip listでモジュールの存在は確認できた 2. ターミナルのpythonのpathとvscodeのpythonのpathは一致していた です. GUIで表示されているものと実際のpathが異なるくらいしか原因が思いつきません...
TakaiY

2022/11/03 13:13 編集

Run Code ボタンを押すとターミナル画面が表示されると思いますが、その時の表示すべてを貼っていただくことはできますか。 (質問の内容を見ても上のやりとりを見てもエラーがでるのが不思議です。)
PondVillege

2022/11/03 13:26

Run Codeを押下する -> ターミナルが出現する -> 出現したターミナルでpipenv shell -> もう一度Run Codeを押下する -> 正しい環境で実行されるかも とかぐらいしか思いつかないですね...
Cocode

2022/11/03 13:57

私も先日、実行インタープリターちゃんと設定しているのに、「▶︎Run code」から実行すると、仮想環境のPythonが使われないという現象に見舞われました。 根本的な解決にはなりませんでしたが、拡張機能を導入したら▶︎からでも実行できるようになりました。 参考までによければ… https://teratail.com/questions/o1lr04ucrdmnkq
TakaiY

2022/11/03 14:44

Cocodeさん、「「▶︎Run code」から実行すると、仮想環境のPythonが使われない」の時、使われていないのはどのように確認しましたすか? 表示されるターミナルの画面ですか?
Cocode

2022/11/03 15:01 編集

リンク先の質問の内容にある「発生しているエラー」で紹介しているコードを実行することで、実行しているPythonのバージョンがターミナルに出力されて確認できます〜! 私の場合、VSCodeのインタプリタを3.10を使っている仮想環境に設定しているはずなのに、▶︎ボタンを押すと3.9.4で実行されてしまっていました。
Cocode

2022/11/03 15:04

リンク先の質問では紹介していませんでしたが import sys print(sys.executable) ↑こっちを実行したほうが確実にパスが確認できていいかもしれません。
nanyakanya

2022/11/03 15:07

有難うございます. 書いていただいたコードを実行したところ ``` >>> import sys >>> print(sys.executable) /Users/a81701/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/python ``` 以上のように出力されました. 見たところ選択しているpythonインタープリタと同じpathでした
nanyakanya

2022/11/03 15:12

質問を編集して画像を掲載しました
jbpb0

2022/11/03 22:38

> 2. ターミナルのpythonのpathとvscodeのpythonのpathは一致していた とは、インポートができるターミナルと、インポートができないvs codeのそれぞれで、下記を実行した結果が同じ、という意味でしょうか? import sys print(sys.executable) 上記がyesの場合ですが、ターミナルとvs codeのそれぞれで下記を実行した結果も全て同じでしょうか? 何か相違点がありませんでしょうか? import platform print(platform.platform()) import sys import pprint pprint.pprint(sys.path)
nanyakanya

2022/11/04 03:01

test.pyとしてvs codeで ``` import sys print(sys.executable) ``` を実行したところ >>>/Users/**/opt/anaconda3/bin/python と出力されました. ターミナルでは >>>/Users/**/.local/share/virtualenvs/3dpcp_book_codes-oSIWbEK5/bin/python と出力されたので, vscodeの方でpythonのインタープリタ設定がうまくいっていないことがわかりました. 質問でも書いているようにgui上ではターミナルで出力されたpathのpythonインタープリタが設定されているように見えるのですが, 設定ファイル上でうまく設定できていないということでしょうか?
jbpb0

2022/11/04 03:11

> vscodeの方でpythonのインタープリタ設定がうまくいっていない > gui上ではターミナルで出力されたpathのpythonインタープリタが設定されているように見える そのことを、質問を編集して追記してください
Cocode

2022/11/04 03:16

私と同じ現象かと思うので、よかったら拡張機能の導入をお試しください。自己解決のベストアンサーに詳細を記載しております。私はそれでなんとかなりました。(根本的解決にはなっていませんが) https://teratail.com/questions/o1lr04ucrdmnkq
nanyakanya

2022/11/04 03:20

有難うございます
guest

回答1

0

自己解決

https://teratail.com/questions/o1lr04ucrdmnkq
こちらの回答と同じ方法で解決しました.

根本的な解決策としてはまだわかっていないのでコメントがありましたらお願いいたします

投稿2022/11/04 08:10

nanyakanya

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問