#python #ubuntu #visual-studio-code #wsl-2
Вопрос:
Я потратил 6 часов, пытаясь решить проблему импорта, которая выглядела примерно так:
Каталог:
workspace
workspace/src
workspace/src/app/main.py
workspace/src/app/__init__.py
workspace/src/app/api/api_v1.py
workspace/src/app/api/__init__.py
main.py
from app.api.api_v1 import api_router
api.py
from fastapi import APIRouter
api_router = APIRouter()
Ошибки при попытке запуска main.py:
- из app.api.api_v1 импорт api_router > модуль приложения не найден
- из .api.api_v1 импорт api_router > относительный импорт, но без родительского модуля
- из api.api_v1 импортируйте api_router > это работает, но линтинг не работает
Затем я добавляю дополнительные пути к настройкам .vscode:
{
"python.analysis.extraPaths": ["./src/app"]
}
Я запускал WSL2 в Windows с файлами на подключенном диске, но переместил его на домашний диск на удаленном устройстве Linux WSL: /mnt/c/james > /home/james/ ~$
Мой вопрос в том, как получилось, что я бегу main.py и это дало ошибку 1, а затем буквально запустив ее снова, сразу же выдает ошибку 2? Затем добавление дополнительных путей не имеет значения, а затем на следующее утро я перезагрузил свой ноутбук, и все волшебным образом сработало?
Мне хочется плакать…
Ответ №1:
похоже, что ответ может заключаться в том, что мне нужно изменить каталог, в котором я запускаю main.py из терминала:
это не работает:
~workspace/$ main.py
это работает:
~workspace/$ cd src/
~workspace/src/$ main.py
Комментарии:
1. Еще одна вещь, которую я делаю, — это комментирую, сохраняю или раскомментирую и сохраняю настройки .vscode, которые предоставляют python дополнительные маршруты путей. Это заставляет vscode повторно проверять все пакеты снова. Работает хорошо.