web-dev-qa-db-ja.com

プロジェクトモジュールを見つけるためにVSCode / Pythonデバッガーを取得できません

プロジェクトがあり、main.pyをデバッグしようとしています。デバッガーを実行しているときに、ファイルの先頭にあるインポートから次のエラーが発生する理由(のみ)が本当に混乱しています。

Exception has occurred: ModuleNotFoundError
No module named 'bbb'
  File "/Users/maxepstein/myproject/bbb/train/__main__.py", line 8, in <module>
    from bbb.mysubfolder.myfile import myfunction

これらのprintステートメント(デバッガーによって示される)によって示されるように、私のプロジェクトフォルダー構造は、私の 'bbb'モジュールが存在することを確認し、__init__。pyを持っています:

import os
print(os.getcwd())
print(os.listdir())
print(os.listdir('bbb'))

/Users/maxepstein/myproject
['requirements.txt', 'bbb', 'resources', '__init__.py', 'readme.md', 'results', '.gitignore', '.git', '.vscode', 'bbenv']
['config', 'tests', '__init__.py', 'utils', 'predict', 'train']

「debugcurrentfile-integratedterminal」としてデバッグしようとしています。以下は私のdebugsettings.jsonからの該当するデバッグ設定です。オンラインで検索した後、以下に"cwd": "/Users/maxepstein/myproject"を追加することが私の解決策になると本当に思いましたが、それは役に立ちませんでした。

"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Current File (Integrated Terminal)",
        "type": "python",
        "request": "launch",
        "program": "${file}",
        "console": "integratedTerminal",
        "cwd": "/Users/maxepstein/myproject"
    }

どんな助けや洞察も大歓迎です。

3
Max Power

VSCodeでPythonモジュールをデバッグしているときは、現在のファイルの代わりにモジュールデバッグ構成を使用します。次のようになります。

{
    "name" : "Python: Module",
    "type" : "python",
    "request": "launch",
    "module": "bbb",
    "args": []
}

ドキュメントを参照してください https://code.visualstudio.com/docs/python/debugging

また、VS Codeでは、次の手順で次の設定が自動入力されます。

デバッグ->構成の追加-> Python:モジュール

5
epak96

ネストされたディレクトリからインポートする場合にも同じ問題があり、環境変数PYTHONPATHに追加することで修正しました。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "env": {
                "PYTHONPATH":"${PYTHONPATH}:/home/maxepstein/myproject/"
            }
        }
    ]
}
1
JBSnorro

現在のファイルデバッグ構成を使用できます。モジュールをインポートするデバッグ中のファイルで、インポートしようとしているモジュールへのフルパスをシステムパスに追加します。

sys.path.append('/Users/my_repos/hw/assignment')
import src.network as network

ここでのモジュールはsrcで、assignmentディレクトリにあります。

0
gary69