Python 3.x 如何构造Python3项目以运行web服务和测试套件(导入问题)
我有一个围绕FastAPI构建的简单Python web服务,如下所示Python 3.x 如何构造Python3项目以运行web服务和测试套件(导入问题),python-3.x,pytest,python-import,pythonpath,fastapi,Python 3.x,Pytest,Python Import,Pythonpath,Fastapi,我有一个围绕FastAPI构建的简单Python web服务,如下所示 project/ app/ __init__.py main.py config.py tests/ run_tests.py main.py需要从config.py导入一些项目,如下所示 project/ app/ __init__.py main.py config.py tests/ run_tests.py 从app.
project/
app/
__init__.py
main.py
config.py
tests/
run_tests.py
main.py
需要从config.py
导入一些项目,如下所示
project/
app/
__init__.py
main.py
config.py
tests/
run_tests.py
从app.config导入设置
app=FastAPI()
我需要像这样运行它来运行Web服务
$ cd project/app
$ python main.py
$ # Or I can do this
$ uvicorn main:app --reload
run_tests.py
有此代码
从app.main导入app
从app.config导入设置
我像这样运行测试
project/
app/
__init__.py
main.py
config.py
tests/
run_tests.py
$cd项目/应用程序/测试
$pytest
然而,这不起作用。我只能让测试工作或者让Web服务器工作
$cd项目/应用程序
$python main.py
回溯(最近一次呼叫最后一次):
文件“main.py”,第19行,在
从app.config导入设置
ModuleNotFoundError:没有名为“app”的模块
$cd..//项目
$#我现在只在“/project”中,而不是在“project/app”中
$python应用程序/main.py
回溯(最近一次呼叫最后一次):
文件“app/main.py”,第19行,在
从app.config导入设置
ModuleNotFoundError:没有名为“app”的模块
如果我尝试将其更改为相对导入
main.py
from.config导入设置
我得到这个错误
$cd项目/应用程序
$python main.py
回溯(最近一次呼叫最后一次):
文件“main.py”,第19行,在
从.config导入设置
ModuleNotFoundError:没有名为“\uuuu main\uuuu.config”的模块__main__;不是一个包
只有当我按如下方式更改它时,它才起作用
main.py
来自配置导入设置
$cd项目/应用程序
$python main.py
$python main.py
信息:已启动服务器进程[8325]
信息:uvicorn。错误:已启动服务器进程[8325]
信息:正在等待应用程序启动。
但是-这会中断单元测试的运行
main.py
来自配置导入设置
$cd项目/应用程序/测试
$pytest
测试api.py:7:in
从app.main导入应用程序
../main.py:19:in
从配置导入设置
E ModuleNotFoundError:没有名为'config'的模块
我不明白发生了什么事?我的
project/app
文件夹中有一个\uuuu init\uuuuuuuuuuuuuuuupy
,为什么不将其视为一个包?查看此问题,可能会有帮助:查看此问题,可能会有帮助: