如何从scripts_for_testing目录引用同级的py_lopa开发模块?
解决测试脚本移入子目录后无法引用py_lopa模块的问题
方法一:动态添加模块搜索路径
在每个测试脚本开头加入一段代码,把src_code目录(py_lopa和scripts_for_testing的共同上级)加入Python的模块搜索路径,原有导入语句可以完全保留:
import sys from pathlib import Path # 获取当前脚本所在目录的上级目录(即src_code) src_dir = Path(__file__).parent.parent sys.path.append(str(src_dir)) # 原有导入语句无需修改 from py_lopa.model_interface import Model_Interface from py_lopa.data.tests_enum import Tests_Enum from py_lopa.data.tables import Tables
这种方式不用调整项目结构或运行命令,适合开发阶段快速适配。
方法二:使用相对导入(需调整运行方式)
给scripts_for_testing目录添加空的__init__.py文件,将其标记为Python包,然后修改测试脚本的导入语句为相对路径形式:
from ..py_lopa.model_interface import Model_Interface from ..py_lopa.data.tests_enum import Tests_Enum from ..py_lopa.data.tables import Tables
注意:使用相对导入时,不能直接在scripts_for_testing目录下运行脚本,需要从src_code的上级目录执行命令,例如:
python -m src_code.scripts_for_testing.test_script_001
这种方式更符合Python包结构规范,但需要改变脚本的运行方式。
方法三:将py_lopa安装为可编辑模式
在src_code目录下创建配置文件,通过pip把模块安装为可编辑模式,这样无论测试脚本放在哪里,都能直接导入py_lopa。
- 在
src_code目录下创建setup.py文件:
from setuptools import setup, find_packages setup( name="py_lopa", version="0.1.0", packages=find_packages() )
- 终端进入
src_code目录,执行命令:
pip install -e .
安装完成后,测试脚本里的原有导入语句可以完全保留,直接运行脚本即可,无需额外修改路径。这种方式适合长期开发,同时也为后续模块发布做好准备。
内容的提问来源于stack exchange,提问作者Michael James
相关产品推荐
相关产品推荐

