python] 오류
C:\mindone\venvs\SWMM4IIPBS\Scripts\python.exe -m flask run --host=0.0.0.0 --no-reload --no-debugger --port=5001
Traceback (most recent call last):
File "C:\Users\dongsilove\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\dongsilove\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\__main__.py", line 3, in <module>
main()
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\cli.py", line 1105, in main
cli.main()
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\core.py", line 1082, in main
rv = self.invoke(ctx)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\core.py", line 1697, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\core.py", line 1443, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\core.py", line 788, in invoke
return __callback(*args, **kwargs)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\decorators.py", line 92, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\click\core.py", line 788, in invoke
return __callback(*args, **kwargs)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\cli.py", line 953, in run_command
raise e from None
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\cli.py", line 937, in run_command
app: WSGIApplication = info.load_app()
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\cli.py", line 335, in load_app
app = locate_app(import_name, name)
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\flask\cli.py", line 245, in locate_app
__import__(module_name)
File "C:\mindone\flask\SWMM4IIPBS\app.py", line 7, in <module>
from core.OnlineRunInfiltration import OnlineRunInfiltration
File "C:\mindone\flask\SWMM4IIPBS\core\OnlineRunInfiltration.py", line 2, in <module>
from swmm_api import read_inp_file
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\swmm_api\__init__.py", line 3, in <module>
from .output_file import read_out_file, SwmmOutput, out2frame
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\swmm_api\output_file\__init__.py", line 1, in <module>
from .out import read_out_file, SwmmOutput, out2frame
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\swmm_api\output_file\out.py", line 29, in <module>
class SwmmOutput(SwmmOutExtract):
File "C:\mindone\venvs\SWMM4IIPBS\lib\site-packages\swmm_api\output_file\out.py", line 60, in SwmmOutput
filename: str | Path
TypeError: unsupported operand type(s) for |: 'type' and 'type'
종료 코드 1(으)로 완료된 프로세스
오류 메시지를 보면 핵심적인 문제는 다음과 같습니다:
TypeError: unsupported operand type(s) for |: 'type' and 'type'
이 오류는 다음 코드에서 발생하고 있습니다:
filename: str | Path
문제 원인
str | Path는 Python 3.10 이상에서만 지원되는 유니언 타입 표기법입니다. (| 연산자를 타입 힌트로 사용하는 방식)
하지만 당신의 환경에서는 Python 3.8을 사용 중입니다:
File "C:\Users\dongsilove\AppData\Local\Programs\Python\Python38\lib\runpy.py"
따라서 Python 3.8에서는 str | Path를 사용할 수 없습니다.
해결 방법
- 유니언 표기법을 호환되게 변경하기
from typing import Union filename: Union[str, Path]
- str | Path를 Python 3.8 호환 방식으로 바꾸세요:
- 또는 Python 3.10 이상으로 업그레이드
- 해당 표기법을 그대로 사용하고 싶다면 Python 버전을 3.10 이상으로 업그레이드해야 합니다.
추천
- 만약 프로젝트가 다른 라이브러리들과의 호환성 때문에 Python 3.8에 머물러야 한다면, typing.Union 방식으로 코드를 수정하는 것이 안전합니다.
- 그렇지 않다면 Python 3.11로 업그레이드하는 것도 고려해볼 만합니다. (성능 향상 포함)
필요하시면 해당 부분을 자동으로 수정해주는 스크립트나 도구도 도와드릴 수 있습니다.