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

Python项目中如何从Start目录导入bxx.py模块?

解决Python项目跨目录导入变量的方案

先明确你的项目结构:

Start/
├── b23.py
├── b55.py
├── Data/
│   ├── kaso/
│   └── classes/
│       └── app.py

以下是几种可行的解决方法:

方法1:手动添加项目根目录到Python路径

在app.py开头加入代码,把Start目录的绝对路径添加到Python的模块搜索路径中,之后就能直接导入bxx.py里的变量:

import sys
from pathlib import Path

# 定位到Start目录:app.py的路径是Data/classes,往上两级就是Start
start_root = Path(__file__).parent.parent.parent
sys.path.append(str(start_root))

# 导入所需变量
from b23 import target_var
from b55 import another_var

方法2:将Start转为可导入包并使用绝对导入

  1. 在Start目录下创建一个空的__init__.py文件,让Python把它识别为合法包。
  2. 在app.py中使用绝对导入:
from Start.b23 import target_var
from Start.b55 import another_var
  1. 运行app.py时,确保从Start的父目录执行命令:
python -m Data.classes.app

方法3:使用相对导入(需以包方式运行)

如果不想修改路径,可通过相对导入实现,但必须以包的形式运行app.py:

  1. 确保Start和Data目录下都有__init__.py文件(空文件即可)。
  2. 在app.py中使用相对导入:
# 往上两级目录导入b23和b55
from ... import b23
from ... import b55

# 使用变量
print(b23.target_var)
  1. 从Start的父目录运行命令:
python -m Data.classes.app

注意:直接双击或用python Data/classes/app.py运行脚本时,相对导入会失效,因为此时app.py被当作独立脚本而非包的一部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:03:24