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

Python 3.10中模块内导入模块并支持子模块独立运行的方法

解决方案

方法1:从项目根目录用模块方式运行(推荐)

不需要修改任何代码,直接在项目根目录(也就是main.py所在的目录)执行以下命令:

python -m models.file1

这种方式会让Python自动将项目根目录添加到模块搜索路径中,from models import file2这类导入语句就能正常工作,完全符合Python的包结构设计,也是最规范的做法。

方法2:修改file1.py的搜索路径(适配直接运行脚本的场景)

如果必须在models目录下直接执行python file1.py,可以在file1.py的开头添加一段仅在脚本模式下执行的代码,把项目根目录加入搜索路径:

import sys
from pathlib import Path

# 仅当file1作为独立脚本运行时才修改路径
if __name__ == "__main__":
    # 获取项目根目录(models文件夹的上级目录)
    root_dir = Path(__file__).parent.parent
    sys.path.append(str(root_dir))

# 保持原本Pythonic的导入方式
from models import file2, file3

# 脚本的核心逻辑
if __name__ == "__main__":
    # 这里写file1作为独立脚本运行时的代码
    print("Running file1 as standalone script")

为什么这个方法有效?

当file1.py被main.py导入时,__name__不等于__main__,路径修改代码不会执行,不影响原有导入结构;只有当它被单独运行时,才会把项目根目录加入sys.path,让Python能找到models包,从而支持from models import...的导入方式。

避坑提醒

不要把models目录本身加入sys.path,否则Python会把models当作顶级包,反而会破坏原有导入逻辑,必须添加的是models的父目录(即项目根目录)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:15:56