You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中Python模块导入问题:test.py无法调用hello()函数

解决test.py中导入hello()函数的问题

问题原因

test.py位于myapp目录下,直接运行时Python的默认搜索路径(sys.path)是当前脚本所在的myapp目录,而myapp包的父目录(project)不在搜索路径内,因此无法识别myapp模块。你之前添加的path\project\myapp路径方向错误,Python会去该路径下寻找myapp,自然找不到目标模块。

解决方案

方法1:动态添加project目录到sys.path(推荐,跨平台且灵活)

在test.py开头加入以下代码,通过脚本自身路径自动定位project根目录:

import sys
from pathlib import Path

# 获取project目录的绝对路径:当前脚本的父目录的父目录
project_root = Path(__file__).resolve().parent.parent
sys.path.append(str(project_root))

from myapp import hello
hello()

这种方式无需硬编码路径,不管你在哪个位置运行test.py,都能正确找到myapp包。

方法2:使用相对导入

由于test.py和__init__.py同属myapp包,可直接用相对导入语法:

from . import hello
hello()

注意:这种方式不能直接用python test.py运行脚本,必须从project目录下执行:

python -m myapp.test

相对导入仅在模块作为包的一部分被导入时生效,直接运行脚本会将其视为顶层模块,无法识别相对导入的语法。

方法3:配置VS Code运行工作目录

在VS Code中修改运行配置,让test.py的运行工作目录指向project:

  1. 打开.vscode/launch.json(若没有,可通过「运行和调试」面板创建)
  2. 修改cwd字段为${workspaceFolder}(假设你的VS Code工作区根目录是project):
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "cwd": "${workspaceFolder}",
            "console": "integratedTerminal"
        }
    ]
}

配置完成后,直接在VS Code中运行test.py,就能正常执行from myapp import hello语句。

内容的提问来源于stack exchange,提问作者abj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:52:11