VSCode 1.39.x & Python 3.7.x: «ImportError: попытка относительного импорта без известного родительского пакета» - при запуске без отладки (CTRL + F5)) - PullRequest
0 голосов
/ 05 ноября 2019
  • при запуске теста Python из-за отсутствия кода VS с помощью CTRL + F5 я получаю сообщение об ошибке

    ImportError: попытка относительного импорта без известного родительского пакета

Error message text:

  • при запуске теста Python с терминала VS Code с использованием командной строки

    python test_HelloWorld.py

    Я получаю сообщение об ошибке

    ValueError: попытка относительного импорта между пакетом верхнего уровня

Error Message:

Вот структура проекта

Project structure

Как решитьвопрос (ы) с минимальными усилиями (код / ​​структура проекта) изменить?

TIA!

[Обновить]

Я получилСледующее решение с использованием исправления sys.path:

The subject issue solution using sys.path correction

import sys
from pathlib import Path
sys.path[0] = str(Path(sys.path[0]).parent)

, но я думаю, что все еще может быть более эффективное решение без исправлений исходного кода using некоторые (VS Code) настройки или Python, работающий с настройками контекста / среды (файлы)?

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вы сталкиваетесь с двумя проблемами. Во-первых, вы запускаете свой тестовый файл из директории, в которой он написан, и поэтому Python не знает, что представляет ... Есть несколько способов исправить это.

Один из них - принять решение, предложенное @lesiak, изменив импорт на from solutions import helloWorldPackage, но выполнить тесты, запустив python tests/test_helloWorld.py. Это позволит убедиться, что верхний уровень вашего проекта находится в пути поиска Python, и поэтому он будет видеть solutions.

Другое решение - открыть ваш проект в VS Code на один каталог выше (любой каталог, который содержит solutions и tests). Тем не менее, вам все равно придется изменить способ выполнения своего кода, поэтому вы делаете это с верхнего уровня, как я предлагал выше.

Еще лучше было бы выполнить код с помощью python -m tests.test_helloWorld, используйтекоманду Run расширения Python или используйте тестовый проводник расширения. Все эти опции должны помочь вам с тем, как запустить ваш код (вам все равно придется либо изменить импорт, либо открыть более высокий каталог в VS Code).

0 голосов
/ 05 ноября 2019

Не используйте относительный импорт. Просто измените его на

from solutions import helloWorldPackage as hw

Обновление

Я изначально проверял это в PyCharm. PyCharm имеет приятную особенность - он добавляет корень контента и корни исходного кода в PYTHONPATH (оба параметра настраиваются).

Вы можете добиться того же эффекта в VS Code, добавив файл .env:

PYTHONPATH=.:${PYTHONPATH}

Теперь каталог проекта будет находиться в PYTHONPATH для каждого инструмента, который запускается через VS Code. Теперь Ctrl + F5 работает нормально.

...