FastAPI后端启动报错求助:Uvicorn遇依赖与导入问题
FastAPI启动报错排查与解决
问题描述
尝试用Uvicorn main:app --reload启动FastAPI后端,先后遇到两个核心错误:
- 初始报错:
ModuleNotFoundError: No module named 'cryptography' - 安装cryptography后报错:
ImportError: attempted relative import with no known parent package,同时伴随循环导入相关错误,尝试python -m Uvicorn main:app --reload也无法解决。
main.py代码
from . import models from fastapi import FastAPI from .database import engine from .routers import books, users,authentication app=FastAPI() models.Base.metadata.create_all(engine) app.include_router(books.router) app.include_router(users.router) app.include_router(authentication.router)
初始报错信息
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [4840] using StatReload Traceback (most recent call last): File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\backends\__init__.py", line 10, in <module> from jose.backends.cryptography_backend import CryptographyRSAKey as RSAKey # noqa: F401 File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\backends\cryptography_backend.py", line 4, in <module> from cryptography.exceptions import InvalidSignature, InvalidTag ModuleNotFoundError: No module named 'cryptography' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\uvicorn\__init__.py", line 1, in <module> from uvicorn.config import Config File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\uvicorn\config.py", line 1, in <module> import asyncio File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\__init__.py", line 8, in <module> from .base_events import * File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 18, in <module> import concurrent.futures File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\concurrent\futures\__init__.py", line 8, in <module> from concurrent.futures._base import (FIRST_COMPLETED, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\concurrent\futures\_base.py", line 7, in <module> import logging File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\logging\__init__.py", line 26, in <module> import sys, os, time, io, re, traceback, warnings, weakref, collections.abc File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\traceback.py", line 5, in <module> import linecache File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\linecache.py", line 11, in <module> import tokenize File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\tokenize.py", line 35, in <module> from token import * File "C:\Users\darkg\OneDrive\Desktop\loginpage\FastAP_Backend\books\.\token.py", line 4, in <module> from jose import JWTError, jwt File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\jwt.py", line 6, in <module> from jose import jws File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\jws.py", line 5, in <module> from jose import jwk File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\jwk.py", line 1, in <module> from jose.backends.base import Key File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\backends\__init__.py", line 13, in <module> from jose.backends.rsa_backend import RSAKey # noqa: F401 File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\backends\rsa_backend.py", line 9, in <module> from jose.backends._asn1 import ( File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jose\backends\_asn1.py", line 5, in <module> from pyasn1.codec.der import decoder, encoder File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pyasn1\codec\der\decoder.py", line 7, in <module> from pyasn1.codec.cer import decoder File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pyasn1\codec\cer\decoder.py", line 8, in <module> from pyasn1.codec.ber import decoder File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pyasn1\codec\ber\decoder.py", line 7, in <module> from pyasn1 import debug File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pyasn1\debug.py", line 63, in <module> class NullHandler(logging.Handler): AttributeError: partially initialized module 'logging' has no attribute 'Handler' (most likely due to a circular import)
安装cryptography后的报错信息
Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\multiprocessing\spawn.py", line 116, in spawn_main exitcode = _main(fd, parent_sentinel) File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\multiprocessing\spawn.py", line 126, in _main self = reduction.pickle.load(from_parent) File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\uvicorn\__init__.py", line 1, in <module> from uvicorn.config import Config File "C:\Users\darkg\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\uvicorn\config.py", line 1, in <module> import asyncio File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\__init__.py", line 8, in <module> from .base_events import * File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 18, in <module> import concurrent.futures File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\concurrent\futures\__init__.py", line 8, in <module> from concurrent.futures._base import (FIRST_COMPLETED, File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\concurrent\futures\_base.py", line 7, in <module> import logging File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\logging\__init__.py", line 26, in <module> import sys, os, time, io, re, traceback, warnings, weakref, collections.abc File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\traceback.py", line 5, in <module> import linecache File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\linecache.py", line 11, in <module> import tokenize File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\lib\tokenize.py", line 35, in <module> from token import * File "C:\Users\darkg\OneDrive\Desktop\loginpage\FastAP_BackEnd\books\.\token.py", line 5, in <module> from . import schemas ImportError: attempted relative import with no known parent package
解决方案
1. 修复模块导入问题
从报错路径可以看到,token.py在books目录下,使用相对导入时Python无法识别父包,核心原因是启动方式或项目结构导致模块路径异常。
调整启动命令
确保在main.py所在的项目根目录执行命令,注意uvicorn为小写:
uvicorn main:app --reload
若仍有问题,改用模块方式启动,强制Python识别包结构:
python -m uvicorn main:app --reload
调整导入语句(可选)
如果项目不是标准包结构,将token.py中的相对导入改为绝对导入,假设项目根目录已在Python路径中:
from schemas import ... # 替换为实际需要的类或函数
或者确保books目录是标准Python包(添加空的__init__.py文件),再从根目录启动服务。
2. 解决循环导入问题
初始报错中的logging模块异常,是因为自定义的token.py文件覆盖了Python标准库的token模块,导致导入路径混乱。
重命名自定义文件
将books目录下的token.py重命名为jwt_token.py或其他不与标准库冲突的名称,同时更新所有引用该文件的导入语句(比如authentication路由中的导入)。
3. 确保依赖完整
重新安装所有依赖,避免版本冲突:
pip install --upgrade fastapi uvicorn python-jose[cryptography]
使用python-jose[cryptography]会自动安装cryptography作为依赖,避免手动安装遗漏。
内容的提问来源于stack exchange,提问作者Filiberto Medina
相关产品推荐
相关产品推荐

