테스트 사이트 - 개발 중인 베타 버전입니다

그누보드6 설치후 실행 안됩니다 채택완료

kangil 11개월 전 조회 2,473

환경은 윈도우11에서 진행 했구요

가상환경 만들어서 실행함

INFO:     Will watch for changes in these directories: ['F:\\python\\te\\g6']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [1644] using WatchFiles
Process SpawnProcess-1:
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\multiprocessing\process.py", line 315, in _bootstrap
    self.run()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\multiprocessing\process.py", line 108, in run
    self._target(*self._args, **self._kwargs)
  File "F:\python\te\lib\site-packages\uvicorn\_subprocess.py", line 80, in subprocess_started
    target(sockets=sockets)
  File "F:\python\te\lib\site-packages\uvicorn\server.py", line 65, in run
    return asyncio.run(self.serve(sockets=sockets))
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 647, in run_until_complete
    return future.result()
  File "F:\python\te\lib\site-packages\uvicorn\server.py", line 69, in serve
    await self._serve(sockets)
  File "F:\python\te\lib\site-packages\uvicorn\server.py", line 76, in _serve
    config.load()
  File "F:\python\te\lib\site-packages\uvicorn\config.py", line 434, in load
    self.loaded_app = import_from_string(self.app)
  File "F:\python\te\lib\site-packages\uvicorn\importer.py", line 19, in import_from_string
    module = importlib.import_module(module_str)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "F:\python\te\g6\main.py", line 22, in <module>
    from core.routers import router as template_router
  File "F:\python\te\g6\core\routers.py", line 5, in <module>
    from bbs.board import router as board_router
  File "F:\python\te\g6\bbs\board.py", line 27, in <module>
    from service.board import (
  File "F:\python\te\g6\service\board\__init__.py", line 1, in <module>
    from .board import BoardService
  File "F:\python\te\g6\service\board\board.py", line 20, in <module>
    from lib.slowapi.create_post_limit.limiter import validate_slowapi_create_post
  File "F:\python\te\g6\lib\slowapi\__init__.py", line 10, in <module>
    class CustomConfig(Config):
  File "F:\python\te\g6\lib\slowapi\__init__.py", line 12, in CustomConfig
    def _read_file(self, file_name: str | Path) -> dict[str, str]:
TypeError: unsupported operand type(s) for |: 'type' and 'type'

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
glitter0gim
11개월 전

-  def _read_file(self, file_name: str | Path) -> dict[str, str]:

    이 코드의 에러 같습니다.

 

※ 문제는 Python 버전 호환성 때문입니다.

코드에서 사용된 | 연산자는 Python 3.10 이상에서 지원되는 새로운 유형 힌팅 구문으로,

Python 3.9에서는 지원되지 않아 str | Path와 같은 표현을 사용할 수 없습니다.

이를 해결하려면 Python을 3.10 이상으로 업그레이드하거나,

기존 코드를 수정하여 typing 모듈의 Union을 사용하는 방식으로 변경해야 합니다.

예를 들어, from typing import Unionfrom pathlib import Path를 임포트한 뒤,

 def _read_file(self, file_name: Union[str, Path]) -> dict[str, str]:

이와 같이 수정하면 Python 3.9에서도 호환될 수 있습니다.

 

♣ 해결 방법~

  - 아래는, Python 3.10 이상으로 업그레이드 라이브러리의 코드를 수정하지 않고,

현재 환경의 Python 버전을 3.10 이상으로 업그레이드합니다.

  - lib/slowapi/__init__.py 파일을 열어,

_read_file 메서드의 정의를 아래와 같이 수정합니다.

</p>

<p>from typing import Union

from pathlib import Path</p>

<p>def _read_file(self, file_name: Union[str, Path]) -> dict[str, str]:</p>

<p>

  - slowapi 라이브러리를 최신 버전으로 업데이트합니다

</p>

<p>pip install --upgrade slowapi</p>

<p>

 

♣ Python 3.10 이상으로 업그레이드하는 것이 가장 간단하며,

위의 예시는, 라이브러리 업데이트 또는 직접 수정을 통해 문제를 해결하는 것입니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

kangil
10개월 전

파이썬은 버전에 따라 문장을 약간 쓰는법이  다르게 쓰네요.
이부분은 자료를 한참 찿아가면서 해야 겠네요 

 

답변주셔서 감사 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

11개월 전

순정 상태에서 실행이 안된다면

서버 상태가 그누보드6의 요구사항 부합되지 않아서 그렇습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

k
kangil
11개월 전
pip freeze로 확인 한 결과 requirements.txt 버전보다 상위 버전이 일부 설치되어 있네요
버전 차이로 그럴까요?
애드프로
11개월 전
네 가급적 권장 버전으로 해보세요..
아직 그누보드6 은 활발하지 않아 예외가 많습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인