如何从非同级目录结构的其他文件夹导入Python模块
平级目录下跨文件夹导入Python模块实现方法
首先明确你的目录结构(两个目录处于同一父级目录下):
项目根目录/ ├── Scripts/ │ └── app.py └── Keymaker/ └── keymaker.py
推荐实现方案(兼容性最好,不受项目存放路径影响)
- 先给
Keymaker目录添加一个空的__init__.py文件,把目录标记为可导入的Python包,兼容所有Python版本,避免隐式命名空间包带来的奇怪导入问题。 - 在
app.py文件的最顶部添加如下代码,动态将项目根目录加入Python的模块搜索路径,之后就可以正常导入目标模块:
import sys from pathlib import Path # 动态获取项目根目录路径:当前app.py在Scripts文件夹下,往上跳一级就是两个目录共同的父级根目录 root_path = Path(__file__).parent.parent.resolve() sys.path.append(str(root_path)) # 正常导入keymaker模块即可使用 from Keymaker import keymaker
临时运行方案(仅对单次命令生效)
如果你不想修改代码,也可以在运行脚本时临时指定模块搜索路径:
- 先进入项目根目录打开终端
- Windows系统(cmd环境)执行命令:
set PYTHONPATH=%cd% && python Scripts/app.py - Linux/macOS系统执行命令:
PYTHONPATH=$(pwd) python Scripts/app.py
注意:不要在代码里写死本地绝对路径(比如
sys.path.append("C:/myproject")),否则项目移动位置、换设备运行时会直接导入失败。
内容的提问来源于stack exchange,提问作者Sumit Agrawal
相关产品推荐
相关产品推荐

