問題の説明を読みたくない場合は、解決策に直接移動できます。
問題の説明
vscode ではカスタム パッケージのインポート時に問題が発生し、github からの次のプロジェクトを実行できず、ModuleNotFoundError: No module names '***' が表示されます。
たとえば、次のようなプロジェクトがあり、プロジェクト名は experience で、その下に親パッケージがあります。親パッケージにはparent_main.pyと子のサブパッケージが含まれ、子パッケージにはchild_main.pyが含まれます。
経験
|----親
|------parent_main.py
|------子
|----------child_main.py
親メイン.py
def parent_main_func():
print('parent_main_func')
if __name__ == '__main__':
import sys
# 查看环境变量
for a_path in sys.path:
print(a_path)
vscodeの実行結果
c:\Project\experience\parent
C:\Applications\Anaconda\envs\pytorch\python39.zip
C:\Applications\Anaconda\envs\pytorch\DLLs
C:\Applications\Anaconda\envs\pytorch\lib
C:\Applications\Anaconda\envs\pytorch
C:\Users\Powerful\AppData\Roaming\Python\Python39\site-packages
C:\Applications\Anaconda\envs\pytorch\lib\site-packages
C:\Applications\Anaconda\envs\pytorch\lib\site-packages\pyeeg-0.4.4-py3.9.egg
このプロジェクトの最も重要なルート ディレクトリがありませんC:\プロジェクト\経験
child_main.py
if __name__ == "__main__":
from parent.parent_main import parent_main_func
parent_main_func()
vscodeの実行結果
エラー: ModuleNotFoundError: 「親」という名前のモジュールがありません
解決:
vscodeで設定.json内部の設定により、プロジェクトのルート ディレクトリが環境変数に自動的に追加されます。
1.setting.jsonを開きます。左下隅の設定で
2.引き下げる
3.pythonPath の下にコード行を追加します (直接コピーして貼り付けます。変更する必要はありません)。
"terminal.integrated.env.windows": {
"PYTHONPATH":"${workspaceFolder};${env:PYTHONPATH}"},
このステートメントは Linux システムでは機能せず、末尾に複数のセミコロンが付きます。次のように変更する必要があります。
"terminal.integrated.env.windows": {
"PYTHONPATH":"${workspaceFolder}:${env:PYTHONPATH}"},