[그누보드6] 구현 완료된 플러그인 테이블의 값을 메인페이지에서 사용하려할때 발생하는 순환 참조오류
개발한 플러그인의 데이터를 메인화면에서 불러올려고 하니 순환임포트 오류가 나네요. 혹시 이부분 먼저 겪어 보시고 해결하신 분 계실까요?
혹시 이부분 어떡해 해결해야 할까요? 아래는 오류 내용입니다.
INFO: Will watch for changes in these directories: ['C:\\Users\\fancy\\g6']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [16156] using StatReload
Process SpawnProcess-1:
Traceback (most recent call last):
File "C:\Program Files\Python311\Lib\multiprocessing\process.py", line 314, in _bootstrap
self.run()
File "C:\Program Files\Python311\Lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\_subprocess.py", line 80, in subprocess_started
target(sockets=sockets)
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\server.py", line 66, in run
return asyncio.run(self.serve(sockets=sockets))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\asyncio\base_events.py", line 654, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\server.py", line 70, in serve
await self._serve(sockets)
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\server.py", line 77, in _serve
config.load()
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\config.py", line 435, in load
self.loaded_app = import_from_string(self.app)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\fancy\g6\venv\Lib\site-packages\uvicorn\importer.py", line 19, in import_from_string
module = importlib.import_module(module_str)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\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 "C:\Users\fancy\g6\main.py", line 22, in <module>
from core.routers import router as template_router
File "C:\Users\fancy\g6\core\routers.py", line 4, in <module>
from bbs.index import router as index_router
File "C:\Users\fancy\g6\bbs\index.py", line 13, in <module>
from plugin.current_week.models import Currentweek
File "C:\Users\fancy\g6\plugin\current_week\__init__.py", line 8, in <module>
from .admin import register_admin_menu, register_admin_router
File "C:\Users\fancy\g6\plugin\current_week\admin\__init__.py", line 4, in <module>
from main import app
ImportError: cannot import name 'app' from partially initialized module 'main' (most likely due to a circular import) (C:\Users\fancy\g6\main.py)
INFO: Stopping reloader process [16156]
답변 1개
플러그인 개발시 데이터베이스 모델을 추가할때 제작가이드(https://sir.kr/manual/g6/plugin-create/#_5)에서 가이드한 대로 plugin/{플러그인 이름}/models.py 에 테이블을 매핑시키면 어드민페이지에서 구현할때는 문제가 없지만 나중에 프론트에서 데이터를 가져올려면 순환참조 오류가 여러개의 파일에서 납니다. core\models.py 파일에 플러그인 관련 데이터베이스 모델을 추가하는 방법을 쓰면 어떨까요...
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인