Я пытаюсь отладить свое приложение на Python с помощью VSCode. Но я не могу правильно настроить свою среду. Попытка импортировать класс из одной папки в моем исходном пути к другой, выдает мне следующее сообщение:
Traceback (most recent call last):
File "/Users/mb/Library/source/sandbox/lib/lib.py", line 1, in <module>
from app.main import MyClass
ModuleNotFoundError: No module named 'app'
Я создал простое приложение для выявления проблемы. Мой путь к источнику выглядит следующим образом:
sandbox
+-- .vscode
--- launch.json
+-- app
--- __init__.py
--- main.py
+-- lib
-- lib.py
# main.py
class MyClass:
def __init__(self):
print('Creating object...')
def print_message(self, message):
print(message)
# lib.py
from app.main import MyClass
myclass = MyClass()
myclass.print_message('hello, world!')
При попытке запустить lib.py
с использованием конфигурации по умолчанию для запуска текущего файла я получаю сообщение об ошибке выше.
ДополнительноЯ создал .vscode/launch.json
для установки рабочего каталога, но безрезультатно. Вот мой launch.json
:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}"
},
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "main"
}
]
}
Я уверен, я упускаю простую настройку, но не могу на это указать.
Примечание
- Используемый интерпретатор: Python 3.7.5 64-битный
- Приведенный выше код прекрасно работает в PyCharm.
- После некоторого чтенияВ документации VSCode я добавил
"env": {"PYTHONPATH": "${workspaceFolder}"}
к launch.json
, но это не принесло пользы. - Я также создал задачу VSCode , чтобы отобразить переменную
${workspaceFolder}
, ина выходе были удалены все \
с пути, как если бы они не избежали. Вот задача в .vscode/tasks.json
:
{
"version": "2.0.0",
"tasks": [
{
"label": "workspaceFolder",
"type": "shell",
"command": "echo ${workspaceFolder}"
}
]
}
И вот что из нее получено:
> Executing task: echo C:\Users\mb\Library\source\sandbox <
C:UsersmbLibrarysourcesandbox
Terminal will be reused by tasks, press any key to close it.