[그누보드6] 구현 완료된 플러그인 테이블의 값을 메인페이지에서 사용하려할때 발생하는 순환 참조오류

[그누보드6] 구현 완료된 플러그인 테이블의 값을 메인페이지에서 사용하려할때 발생하는 순환 참조오류

QA

[그누보드6] 구현 완료된 플러그인 테이블의 값을 메인페이지에서 사용하려할때 발생하는 순환 참조오류

답변 1

사용하는 빌더

기타

본문

개발한 플러그인의 데이터를 메인화면에서 불러올려고 하니 순환임포트 오류가 나네요. 혹시 이부분 먼저 겪어 보시고 해결하신 분 계실까요?

혹시 이부분 어떡해 해결해야 할까요? 아래는 오류 내용입니다.

 

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 파일에 플러그인 관련 데이터베이스 모델을 추가하는 방법을 쓰면 어떨까요...

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,112
© SIRSOFT
현재 페이지 제일 처음으로