Python:如何从子目录导入包

问题描述

我有以下项目结构:

Project/
|-- src/
|   |-- package/
|       |-- __init__.py
|       |-- a.py
|       |-- b.py
|
|-- tests/
    |-- test_a.py

我的 __init__.py 文件看起来像这样

from .a import some_function
from .b import SOME_CONSTANT

但现在我想在 test_a.py 中运行以下代码

import package

package.some_function()

只要它位于 src/ 目录中,一切正常,我可以访问我的包中定义的所有导入。但我希望它位于 tests/ 目录中。

在查看 flask 存储库时,我发现 x 就是这样做的。例如,烧瓶 test_appctx.py 正是这样做的:

import flask

flask.do_something()

我怎样才能在我的项目中实现这一点?

解决方法

您应该将 src/ 添加到查找函数的文件夹中:

import sys
sys.path.append('../src')