如何在不修改sys path的前提下测试上级目录中的main.py?
不修改sys.path前提下导入上级目录main.py的方法
你的项目目录结构如下:
| |---test | |----test1.py | |----test2.py | |---alibrary | |--thelib.py | |--main.py
test1.py中通过import alibrary.thelib as thelib导入模块的方式能正常运行,是因为运行时项目根目录已经在Python的sys.path中。要在test2.py中不修改sys.path导入main.py的函数,按以下步骤操作:
- 在项目根目录(即包含main.py、test、alibrary的目录)创建一个空的
__init__.py文件,让Python将整个项目识别为可导入的包。 - 在test2.py中使用绝对导入方式导入main.py中的函数,示例代码:
# 导入整个main模块 import main # 或者直接导入需要测试的特定函数 from main import target_function
- 运行test2.py时,必须从项目根目录执行,使用模块运行的方式:
python -m test.test2
这样操作的原理是:用-m参数运行模块时,Python会自动将当前工作目录(项目根目录)加入sys.path,结合根目录的__init__.py,就能直接识别并导入main模块,无需手动修改sys.path。
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

