Python跨目录模块导入实现:按指定方式完成多场景导入
Python项目导入配置实现方案
项目目录结构
/Document/office/Project/ ├── config.py ├── app.py ├── src/ │ ├── abc.py │ └── xyz.py └── test/ └── testcase.py
实现步骤
1. 将src和test目录标记为Python包
在src/和test/目录下分别创建空的__init__.py文件,让Python识别它们为可导入的包:
src/ ├── __init__.py ├── abc.py └── xyz.py test/ ├── __init__.py └── testcase.py
2. 确保项目根目录在Python模块搜索路径中
Python会从sys.path列表中的路径查找模块,必须把项目根目录/Document/office/Project加入其中,有三种常用方式:
方式一:从项目根目录运行脚本
打开终端,切换到/Document/office/Project目录,再执行脚本:
- 运行app.py:
python app.py - 运行testcase.py:
python test/testcase.py
这种方式会自动将当前工作目录(根目录)加入sys.path,是最推荐的做法。
方式二:设置PYTHONPATH环境变量
通过环境变量永久或临时添加根目录到搜索路径:
- Linux/macOS终端:
export PYTHONPATH="/Document/office/Project:$PYTHONPATH" - Windows命令提示符(cmd):
set PYTHONPATH=C:\Document\office\Project;%PYTHONPATH% - Windows PowerShell:
$env:PYTHONPATH = "C:\Document\office\Project;$env:PYTHONPATH"
方式三:代码中临时添加路径(不推荐长期使用)
在需要导入config的文件(abc.py、xyz.py、testcase.py)开头添加以下代码,动态将根目录加入sys.path:
import sys import os # 获取当前文件的父目录的父目录(即项目根目录) root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if root_dir not in sys.path: sys.path.append(root_dir)
对应需求的导入代码
1. 在abc.py、xyz.py、testcase.py中导入config.py
直接使用以下代码即可:
import config
2. 在app.py中导入src.abc
直接使用以下代码:
import src.abc
3. 在test/testcase.py中导入abc(src下的abc模块)
推荐使用规范的包导入方式:
import src.abc
如果一定要用import abc,需要额外将src/目录加入sys.path,但这种方式可能引发模块命名冲突,不建议使用。
内容的提问来源于stack exchange,提问作者Jaskaran Singh
相关产品推荐
相关产品推荐

