在没有调试的情况下启动时

在没有调试的情况下启动时

本文介绍了VSCode 1.39.x &Python 3.7.x:“ImportError:尝试在没有已知父包的情况下进行相对导入";- 在没有调试的情况下启动时 (CTRL+F5))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  • 使用 CTRL+F5 从 VS Code 运行 Python 测试时,我收到错误消息

  • when running Python test from withing VS Code using CTRL+F5 I'm getting error message

ImportError:尝试在没有已知父包的情况下进行相对导入

  • 使用命令行从 VS Code 终端运行 Python 测试时

  • when running Python test from VS Code terminal by using command line

python test_HelloWorld.py

我收到错误消息

ValueError:尝试在顶级包中进行相对导入

这里是项目结构

如何以最少的(代码/项目结构)更改工作解决主题问题?

How to solve the subject issue(s) with minimal (code/project structure) change efforts?

TIA!

[更新]

我使用 sys.path 修正得到以下解决方案:

I have got the following solution using sys.path correction:

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

但我想通过使用一些(VS Code)设置或 Python 运行上下文/环境设置(文件),仍然可以有更有效的解决方案,而无需更正源代码?

but I guess there still could be a more effective solution without source code corrections by using some (VS Code) settings or Python running context/environment settings (files)?

推荐答案

不要使用相对导入.只需将其更改为

Do not use relative import.Simply change it to

from solutions import helloWorldPackage as hw

更新

我最初在 PyCharm 中对此进行了测试.PyCharm 有一个很好的功能 - 它向 PYTHONPATH 添加内容根和源根(这两个选项都是可配置的).

I initially tested this in PyCharm. PyCharm has a nice feature - it adds content root and source roots to PYTHONPATH (both options are configurable).

在VS Code中添加一个.env文件也可以达到同样的效果:

You can achieve the same effect in VS Code by adding a .env file:

PYTHONPATH=.:${PYTHONPATH}

现在,项目目录将位于通过 VS Code 启动的每个工具的 PYTHONPATH 中.现在 Ctrl+F5 工作正常.

Now, the project directory will be in the PYTHONPATH for every tool that is launched via VS Code. Now Ctrl+F5 works fine.

这篇关于VSCode 1.39.x &Python 3.7.x:“ImportError:尝试在没有已知父包的情况下进行相对导入";- 在没有调试的情况下启动时 (CTRL+F5))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 12:45