使用VSCode重新编译Django,错误是发生异常:ModuleNotFoundError

bvpmtnay  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(138)

.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上。

wbgh16ku

wbgh16ku1#

在使用VSCode进行调试时,您似乎遇到了Django项目中模块导入的问题。让我们一步一步地解决这个问题。
1.相对进口:
首先,让我们解决相对导入的问题。在Python中,相对导入是基于目录结构的。由于volume.py位于core/backend/sql/subclasses目录中,因此可以像这样使用相对导入:

# volume.py
from ... import class1

字符串
1.设置Python路径:
当你运行脚本或开始调试时,Python需要知道在哪里可以找到你的模块。在Django项目中,在项目根目录下有一个manage.py文件是很常见的,所以你的import语句应该是相对于项目根目录的。
确保Django项目的根目录位于Python路径中。在launch.json中,确保“program”:“${workspaceFolder}/manage.py“正确指向manage.py文件。

  1. VSCode Python路径配置:
    在某些情况下,VSCode可能无法自动识别正确的Python路径。您可以在launch.json中设置“pythonPath”以显式指定Python解释器路径。例如:
{
"version": "0.2.0",
"configurations": [
    {
        "name": "Python: Django",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "args": [
            "runserver"
        ],
        "django": true,
        "justMyCode": true,
        "pythonPath": "${workspaceFolder}/.venv/bin/python"
    }
]


}
1.检查虚拟环境:
确保在运行Django开发服务器或开始调试的终端中激活了虚拟环境(.venv)。使用以下命令激活它:

source .venv/bin/activate  # For Linux/Mac
.\.venv\Scripts\activate   # For Windows


1.安装配置:
确保您的volume.py文件被视为VSCode工作区的一部分。您可以通过检查它是否在VSCode Explorer侧边栏中列出来确认这一点。
在检查并调整这些点之后,您应该能够调试Django项目而不会遇到“ModuleNotFoundError”问题。

相关问题