Python中如何正确导入上级目录中的模块?
当前目录是. 上级目录是… 吧
在Python里导入上级目录的模块,你得先让解释器知道去哪儿找。直接import是行不通的,因为默认的搜索路径(sys.path)里没有上级目录。
最直接的办法就是动态修改sys.path。比如,你的项目结构是这样的:
project/
├── utils/
│ └── helper.py
└── scripts/
└── main.py
在scripts/main.py里,你想导入utils/helper.py,可以这么干:
import sys
import os
# 获取当前文件(main.py)所在的目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取上级目录(project)的路径
parent_dir = os.path.dirname(current_dir)
# 将上级目录添加到sys.path的开头
sys.path.insert(0, parent_dir)
# 现在可以导入了
from utils import helper
# 使用模块
helper.some_function()
注意:用sys.path.insert(0, ...)把它加在开头,能确保优先从这个路径搜索,避免和标准库或第三方包重名时出问题。不过,在大型项目或者打包分发时,更规范的做法是把它做成一个可安装的包(用setup.py或pyproject.toml),或者用相对导入(如果模块在同一个包内)。对于简单的脚本或者临时调试,修改sys.path是最快最实用的方法。
总结:改sys.path最省事。
<br>import sys<br>sys.path.append("..")<br>
\sdk\api…<a target="_blank" href=“http://demo.py” rel=“nofollow noopener”>demo.py 中间路径好多层,我省略了只写了一层 \api\
全部用 . 表示,估计有 五六个 … ,会失效吗?
sys.path.append("…") 超出两个 … 的 append,会有用吗?
#4 你把 project 路径添加到 path 里, 然后直接 import config 就可以了
#5 用 os.path 动态计算出 project 的绝对路径, 不要硬编码一个绝对路径就能解决你说的这个"Project 在测试机和生产机中的系统路径不一样"的问题了
对的。只需要添加项目根目录到 PATH 就可以了
这个 demo 点 py 的路径已经被我 sys.path.append("./sdk/api/") 过了,然后,我想在这个 demo 点 py 中写个函数,要调用 上层的 config 点 py 中的 PARAM,( project 的路径已经添加到 path 里了)导致在 demo 点 py 中直接 import config 就变成了是在 append()过的路径中导入了。
请使用 package 机制
直接从项目根目录开始就可以了

