작성
·
762
·
수정됨
0
현재 몽고디비에 데이터가 잘들어가는지 확인하기 위해서 odmantic을 설치한 이후로 오류가 떴고
이러한 오류가떴고 확인 해보니
from odmantic import AIOEngine 문제라는 판단으로 pip install --upgrade odamantic을 했지만 별 효과가 없어서 문의하게되었습니다. 추가적으로 하다보니 init.py 이했을떄는 문제없고 mongodb.connect할 때 문제인데 mongodb의 연결문제라고 생각중입니다
Process SpawnProcess-1:
Traceback (most recent call last):
File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started
target(sockets=sockets)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete
return future.result()
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve
config.load()
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load
self.loaded_app = import_from_string(self.app)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module
return bootstrap.gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in gcdimport
File "<frozen importlib._bootstrap>", line 1007, in findand_load
File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in loadunlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed
File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\main.py", line 5, in <module>
from app.models import mongodb
File "C:\Users\hs091\studyDs\teaching-async-python-main\6-실전-프로젝트-콜렉터스\app\models\__init__.py", line 2, in <module>
from odmantic import AIOEngine
File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module>
from .bson import ObjectId
File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module>
from pydantic.datetime_parse import parse_datetime
File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper
raise PydanticImportError(f'`{import_path}` has been removed in V2.')
pydantic.errors.PydanticImportError: pydantic.datetime_parse:parse_datetime has been removed in V2.
For further information visit https://errors.pydantic.dev/2.1.1/u/import-error
답변 2
0
odmantic이 pydatnic을 사용하는데 pydantic이 v2로 업데이트 되면서 지원하지 않는 기능을 사용하고 있어 생긴 문제입니다..
아마 fastapi도 pydantic을 사용하는데 v2로 설치된 것 같네요
odmantic 깃헙 이슈에서도 이부분에 대한 지적이 있긴한데.. 가장 빠른 해결책은 pydantic을 다운그레이드 하는 방법입니다.
pip install pydantic == 1.10.10 이렇게 다운그레이드해서 사용하시는게 좋을 것 같네요
그외에도 fastapi를 최신 버전으로 설치하셨다면 @app.on_envet를 지원하지 않습니다..
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(app: FastAPI):
logger.info("앱이 시작됩니다.")
mongoDB.connect()
await mongoDB.check_connection()
yield
logger.info("앱이 종료됩니다.")
await mongoDB.close()
app = FastAPI()
app.router.lifespan_context = lifespan
이렇게 수정하시면 앱이 시작될 때와 종료될 때 몽고DB의 연결 및 해제를 수행할 수 있을꺼에요..
0
안녕하세요, 인프런 AI 인턴이에요. 프로젝트 관련 질문에 답변 드리겠습니다.
odmantic의 설치와 관련된 오류로 보이는데요, 해당 오류는 대체로 다음과 같은 문제로 인해 발생합니다.
문제의 원인과 해결 방법을 정확히 파악하기 위해서는 보다 자세한 정보가 필요합니다. 다음 사항들을 확인해 보시면 도움이 될 수 있을 것 같아요.
추가로, odmantic에 대한 상세한 사용 방법이나 도움이 필요한 부분이 있다면, odmantic의 공식 문서를 참고하시는 것도 좋은 방법이에요. 문제가 계속되거나 더 많은 도움을 받고 싶으시면, odmantic의 개발자 커뮤니티에 질문을 남기는 것도 좋은 방법입니다.
더 나은 답변을 제공하기 위해서는 오류에 대한 추가 정보가 필요합니다. 정확한 원인 파악을 위하여 오류 메시지와 함께 최대한 자세한 상황을 공유해 주세요. 알려진 정보에 따라 도움을 드리고 싶지만, 문제 해결을 위해서는 보다 구체적인 내용이 필요합니다. 재현 가능한 코드 또는 오류가 발생한 부분에 대한 내용도 함께 알려주시면 더욱 도움이 될 수 있어요. 수고하세요!
오류는 이게 전부입니다.
INFO: Will watch for changes in these directories: ['C:\\Users\\hs091\\OneDrive\\바탕 화면\\FastAPI']
INFO: Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)
INFO: Started reloader process [14892] using WatchFiles
Process SpawnProcess-1:
Traceback (most recent call last):
File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "C:\Users\hs091\anaconda3\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\_subprocess.py", line 76, in subprocess_started
target(sockets=sockets)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 61, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\hs091\anaconda3\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Users\hs091\anaconda3\lib\asyncio\base_events.py", line 642, in run_until_complete
return future.result()
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\server.py", line 68, in serve
config.load()
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\config.py", line 467, in load
self.loaded_app = import_from_string(self.app)
File "C:\Users\hs091\anaconda3\lib\site-packages\uvicorn\importer.py", line 21, in import_from_string
module = importlib.import_module(module_str)
File "C:\Users\hs091\anaconda3\lib\importlib\__init__.py", line 127, in import_module
return bootstrap.gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1030, in gcdimport
File "<frozen importlib._bootstrap>", line 1007, in findand_load
File "<frozen importlib._bootstrap>", line 986, in findand_load_unlocked
File "<frozen importlib._bootstrap>", line 680, in loadunlocked
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in callwith_frames_removed
File "C:\Users\hs091\OneDrive\바탕 화면\FastAPI\app\main.py", line 5, in <module>
from app.models import mongodb
File "C:\Users\hs091\OneDrive\바탕 화면\FastAPI\app\models\__init__.py", line 2, in <module>
from odmantic import AIOEngine
File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\__init__.py", line 1, in <module>
from .bson import ObjectId
File "C:\Users\hs091\anaconda3\lib\site-packages\odmantic\bson.py", line 11, in <module>
from pydantic.datetime_parse import parse_datetime
File "C:\Users\hs091\anaconda3\lib\site-packages\pydantic\_migration.py", line 295, in wrapper
raise PydanticImportError(f'`{import_path}` has been removed in V2.')
pydantic.errors.PydanticImportError:
pydantic.datetime_parse:parse_datetime
has been removed in V2.For further information visit https://errors.pydantic.dev/2.1.1/u/import-error
또한 python 버전은 3.9.7
odmantic 버전은 0.9.27
몽고 MongoDBCompass 입니다 mongodb-compass-1.39.0-win32-x64.exe