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

如何跨相邻文件夹跨平台导入Python代码?求简便方案

嘿,我来给你几个跨Windows和Linux的通用方案,都比你之前的方法简单多了!先明确下你的目录结构:

outerLayer/
├─ innerLayer1/
│  └─ main.py
└─ innerLayer2/
   └─ functions.py

下面是两种靠谱的解决方案:

最推荐:用pathlib动态添加父目录到sys.path

这种方法不需要改任何目录结构,几行代码搞定,pathlib会自动处理Windows的\和Linux的/,完全不用自己拼接路径:

from pathlib import Path
import sys

# 拿到outerLayer目录的绝对路径
outer_layer_dir = Path(__file__).parent.parent
# 把这个路径加到Python的模块搜索列表里
sys.path.append(str(outer_layer_dir))

# 现在直接导入就行啦
from innerLayer2 import functions

简单说下逻辑:Path(__file__)是当前main.py的路径,.parent取到它的父文件夹innerLayer1,再.parent就拿到了outerLayer,把这个路径加入sys.path后,Python就能找到innerLayer2里的functions了。

备选:用相对导入(需按包运行)

如果你愿意给outerLayer加个空的__init__.py把它变成Python包,也可以用相对导入:

  1. 先在outerLayer下建个空文件__init__.py,目录结构变成这样:
outerLayer/
├─ __init__.py
├─ innerLayer1/
│  └─ main.py
└─ innerLayer2/
   └─ functions.py
  1. 在main.py里写相对导入代码:
from ..innerLayer2 import functions
  1. 注意哦:这种方式必须从outerLayer的父目录运行脚本,终端里执行这个命令(Windows和Linux通用):
python -m outerLayer.innerLayer1.main

不能直接进到innerLayer1文件夹里跑python main.py,不然会报错的。

总的来说,第一种方案更灵活,不用额外加文件,也没运行方式限制,绝对是你要的简便跨平台方案~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:28:18