.venv在运行调试的终端中被激活。我从volume.py文件运行调试。在volume.py中我使用import core.backend.sql.subclasses.class1 as class1
。这在我调试时触发错误。确切的错误是“ModuleNotFoundError:No module named 'core'”。
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: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/Django/manage.py",
"args": [
"runserver"
],
"django": true,
"justMyCode": true,
"env": {"PYTHONPATH": "${workspaceFolder}/Django/.venv/Scripts/python.exe"}
}
]
}
字符串
文件结构
DjangoReact/
├──.vscode/
| ├── launch.json
├──Django/
| ├── .venv
| ├── manage.py
| ├── Django/
| ├── core/
| ├── backend/
| | ├── sql/
| | ├── subclasses/
| | | ├── __init__.py
| | | ├── class1.py
| | | ├── volume.py
| | ├── __init__.py
| ├── __init__.py
├──React/
型
我希望调试,但我不明白导入在python中是如何工作的。我尝试使用相对导入,但错误是'import error attempted relative import with no known parent package'。我读到你可以在调试时使用sys修复导入,但我不想在导入class1.py的每个文件中添加“sys”。同样,在windows上。
1条答案
按热度按时间wbgh16ku1#
在使用VSCode进行调试时,您似乎遇到了Django项目中模块导入的问题。让我们一步一步地解决这个问题。
1.相对进口:
首先,让我们解决相对导入的问题。在Python中,相对导入是基于目录结构的。由于volume.py位于core/backend/sql/subclasses目录中,因此可以像这样使用相对导入:
字符串
1.设置Python路径:
当你运行脚本或开始调试时,Python需要知道在哪里可以找到你的模块。在Django项目中,在项目根目录下有一个manage.py文件是很常见的,所以你的import语句应该是相对于项目根目录的。
确保Django项目的根目录位于Python路径中。在launch.json中,确保“program”:“${workspaceFolder}/manage.py“正确指向manage.py文件。
在某些情况下,VSCode可能无法自动识别正确的Python路径。您可以在launch.json中设置“pythonPath”以显式指定Python解释器路径。例如:
型
}
1.检查虚拟环境:
确保在运行Django开发服务器或开始调试的终端中激活了虚拟环境(.venv)。使用以下命令激活它:
型
1.安装配置:
确保您的volume.py文件被视为VSCode工作区的一部分。您可以通过检查它是否在VSCode Explorer侧边栏中列出来确认这一点。
在检查并调整这些点之后,您应该能够调试Django项目而不会遇到“ModuleNotFoundError”问题。