简体   繁体   中英

Cannot import local files in python debugger (vs code)

I am doing the following:

  1. mkdir folder_structure
  2. mkdir folder_structure/utils
  3. touch folder_structure/utils/tools.py
  4. touch folder_structure/main.py
  5. Write in main.py:
from folder_structure.utils.tools import dummy

if __name__ == '__main__':
    dummy()
  1. Write in tools.py:
def dummy():
    print("Dummy")
  1. touch folder_structure/__init__.py

  2. touch folder_structure/utils/__init__.py

  3. Run the vs code debugger

I'm getting:

Exception has occurred: ModuleNotFoundError
No module named 'folder_structure'
  File "/Users/davidmasip/Documents/Others/python-scripts/folder_structure/main.py", line 1, in <module>
    from folder_structure.utils.tools import dummy

I have the following in my launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "${workspaceRoot}"
            }
        }
    ]
}

How can I import a local module when using the debugger?

This works for me:

python -m folder_structure.main   

You need replace

from folder_structure.utils.tools import dummy

With

from utils.tools import dummy

Changing the launch.json to this:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "folder_structure.main",
            "justMyCode": true
        },
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "${workspaceRoot}"
            },
            "cwd": "${workspaceRoot}",
        }
    ]
}

and debugging the module works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM