FastAPI项目,执行fastpi dev和uvicorn main:app都报了如下错误:
Traceback (most recent call last):
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/bin/uvicorn", line 8, in <module>
sys.exit(main())
^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/main.py", line 410, in main
run(
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/main.py", line 577, in run
server.run()
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/server.py", line 69, in serve
await self._serve(sockets)
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/server.py", line 76, in _serve
config.load()
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/config.py", line 434, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/uvicorn/importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/baoz/coding/stream-formatter/stream_formatter/main.py", line 22, in <module>
from fastapi import (
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/fastapi/__init__.py", line 7, in <module>
from .applications import FastAPI as FastAPI
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/fastapi/applications.py", line 16, in <module>
from fastapi import routing
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/fastapi/routing.py", line 22, in <module>
from fastapi import params
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/fastapi/params.py", line 5, in <module>
from fastapi.openapi.models import Example
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/fastapi/openapi/models.py", line 299, in <module>
class Operation(BaseModelWithConfig):
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 202, in __new__
complete_model_class(
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 539, in complete_model_class
schema = cls.__get_pydantic_core_schema__(cls, handler)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/main.py", line 626, in __get_pydantic_core_schema__
return handler(source)
^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 502, in generate_schema
schema = self._generate_schema_inner(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 753, in _generate_schema_inner
return self._model_schema(obj)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 580, in _model_schema
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 580, in <dictcomp>
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 916, in _generate_md_field_schema
common_field = self._common_field_schema(name, field_info, decorators)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1081, in _common_field_schema
schema = self._apply_annotations(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1825, in _apply_annotations
schema = get_inner_schema(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1806, in inner_handler
schema = self._generate_schema_inner(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 758, in _generate_schema_inner
return self.match_type(obj)
^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 840, in match_type
return self._match_generic_type(obj, origin)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 864, in _match_generic_type
return self._union_schema(obj)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1152, in _union_schema
choices.append(self.generate_schema(arg))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 502, in generate_schema
schema = self._generate_schema_inner(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 758, in _generate_schema_inner
return self.match_type(obj)
^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 836, in match_type
return self._apply_annotations(source_type, annotations)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1825, in _apply_annotations
schema = get_inner_schema(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1907, in new_handler
schema = metadata_get_schema(source, get_inner_schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_std_types_schema.py", line 314, in __get_pydantic_core_schema__
items_schema = handler.generate_schema(self.item_source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 96, in generate_schema
return self._generate_schema.generate_schema(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 502, in generate_schema
schema = self._generate_schema_inner(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 758, in _generate_schema_inner
return self.match_type(obj)
^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 840, in match_type
return self._match_generic_type(obj, origin)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 864, in _match_generic_type
return self._union_schema(obj)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1152, in _union_schema
choices.append(self.generate_schema(arg))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 497, in generate_schema
from_property = self._generate_schema_from_property(obj, obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 648, in _generate_schema_from_property
schema = get_schema(
^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/main.py", line 626, in __get_pydantic_core_schema__
return handler(source)
^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 753, in _generate_schema_inner
return self._model_schema(obj)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 580, in _model_schema
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 580, in <dictcomp>
{k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 916, in _generate_md_field_schema
common_field = self._common_field_schema(name, field_info, decorators)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1081, in _common_field_schema
schema = self._apply_annotations(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1825, in _apply_annotations
schema = get_inner_schema(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_schema_generation_shared.py", line 82, in __call__
schema = self._handler(source_type)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 1806, in inner_handler
schema = self._generate_schema_inner(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 758, in _generate_schema_inner
return self.match_type(obj)
^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_generate_schema.py", line 829, in match_type
return get_enum_core_schema(obj, self._config_wrapper.config_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic/_internal/_std_types_schema.py", line 95, in get_enum_core_schema
enum_schema = core_schema.enum_schema(
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/baoz/.cache/pypoetry/virtualenvs/stream-formatter-6SvkHO6P-py3.11/lib/python3.11/site-packages/pydantic_core/core_schema.py", line 3974, in __getattr__
raise AttributeError(f"module 'pydantic_core' has no attribute '{attr_name}'")
AttributeError: module 'pydantic_core' has no attribute 'enum_schema'. Did you mean: 'any_schema'?
## 原因:未知
看pydantic的文档https://docs.pydantic.dev/latest/api/pydantic_core_schema/#pydantic_core.core_schema.literal_schema
是有enum_schema的,很奇怪它为什么会抛异常,同样的代码在另一台服务器是能正常运行的。
## 解决:
做了如下步骤后,错误消失了,也不知道具体是通过哪一步解决的:
pipx upgrade poetry
poetry add h11
poetry install --sync --only=main