Hypercorn部署Quart生产环境时报错No module named 'nini'如何解决
问题原因
报错核心是两个问题:
- 代码内函数名不匹配,
setups.py中定义的实例函数是get_app_instance,但server.py中导入的是不存在的create_app - 你使用了相对导入并声明了
__package__ = 'nini',但执行命令时Python无法识别nini作为包的路径
修复步骤
方案1:保持现有包结构,在nini的上层目录运行
- 先修正函数名匹配问题,修改
server.py的导入和实例化逻辑:
__package__ = 'nini' from nini.setups import get_app_instance from nini.db import db if __name__ == '__main__': app = get_app_instance() db.init_app(app) app.run(host='127.0.0.1', debug=True)
- 将当前目录(nini的上层目录)加入Python模块搜索路径:
export PYTHONPATH=$(pwd)
- 执行hypercorn命令,指定包下的server模块:
hypercorn nini.server:app
- 如果要用quart run,对应修改环境变量即可:
export QUART_APP=nini.server:app quart run
方案2:直接在nini目录下运行
- 修改
server.py,删除包声明,把相对导入改为绝对导入:
# 删掉 __package__ = 'nini' 这一行 from setups import get_app_instance from db import db if __name__ == '__main__': app = get_app_instance() db.init_app(app) app.run(host='127.0.0.1', debug=True)
- 如果
setups.py运行时报其他模块导入错误,把里面所有开头带.的相对导入(比如from .confs import ...)的.都删除,改为绝对导入即可。 - 进入nini目录,直接执行命令即可:
hypercorn server:app
内容的提问来源于stack exchange,提问作者matisa
相关产品推荐
相关产品推荐

