こんにちは。趣味グラマのNobu(@nm_aru)です。
最近Pythonを触り始めています。
今日はVSCodeを使っている時に、なぜか「unresolved import」が出た時の対処法をご紹介します。
Pathは合っているはずなのに「unresolved import」が出る
python3 -m venv testPrj
普通に上記のコマンドを打つと、下記のディレクトリが出来上がります。
testPrj
├── bin
├── include
├── lib
└── pyvenv.cfg
ここに、srcディレクトリとmain.pyを置くと、下記のようになります。
testPrj
├── bin
├── include
├── lib
├── pyvenv.cfg
└── src
└── main.py
更にimportしたいモジュールを格納するディレクトリとモジュールファイルを置くと、下記のようになります。
testPrj
├── bin
├── include
├── lib
├── pyvenv.cfg
└── src
├── modules
│ └── somemodule.py
└── main.py
この状況でmain.pyからsomemodule.pyをインポートする場合
from modules import somemodule
と書きますよね?(多分)
しかし、こう書くと「modules」の部分に対して
unresolved import 'modules'Python(unresolved-import)
というエラー(ワーニング?)が表示されます。
ところが、このままmain.pyを実行してみると、somemoduleを正常に読み込んだ上で実行も正常に完了します。
何でだ?という事で、早速Google先生に聞く。
.envにPYTHONPATHの設定をすればOK
例によってGitHubのissueに答えがありました。
Python unresolved import issue · Issue #3840 · microsoft/vscode-python
We believe the issue has been resolved, if not, please do open a new issue. Locking this issue, to ensure we create a ne...
解決法としては
- VSCodeのワークスペース直下に.envを追加
- .env内にPYTHONPATHとして「src」を指定
- VSCodeのsettings.jsonに.envのパスを指定
の3つをやれば良いとの事。
.envの中身
PYTHONPATH=src
settings.jsonへの追加
{
〜省略〜
"python.envFile": "${workspaceFolder}/.env"
〜省略〜
}
確かにこれで直ったのですが、私の場合は3のsettings.jsonへの追加をしなくても、.envが認識されました。
まとめ
こういう環境周りのところは正直面倒だけど、あっさり解決できて良かった\(^o^)/
コメント
私も同じ内容で悩んでおりましたが、.envファイルすることで解決できました。
ありがとうございます。助かりました。
お役に立てて良かったです(^^)
これってOSはmacですか?
> settings.jsonへの追加をしなくても
これは多分VSCodeのデフォルト設定がそうなってたのだと思います!
はい、OSはmacです。
> これは多分VSCodeのデフォルト設定がそうなってたのだと思います!
そういう事だったのですね!
教えていただきありがとうございます!