问题描述
使用 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))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!