You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI后端启动报错求助:Uvicorn遇依赖与导入问题

FastAPI启动报错排查与解决

问题描述

尝试用Uvicorn main:app --reload启动FastAPI后端,先后遇到两个核心错误:

  1. 初始报错:ModuleNotFoundError: No module named 'cryptography'
  2. 安装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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 08:45:35