윈도우11 환경에서 파이썬으로 개발하고, 윈도우10 환경에 배포할 일이 생겼다. 아무래도 윈도우10이 메모리 등 각종 리소스를 적게 사용하는 만큼 개발한 어플리케이션이 쾌적하게 돌아간다. 그러나 윈도우11에서 가져온 파일을 윈도우10에서 실행하니 에러가 발생한다. config.yaml를 로드하면서 발생한 인코딩 에러(cp949)다.
일반적으로 pyyaml을 통해 파일을 로드할 때, 인코딩 코드를 지정하는 매개변수를 지원하므로 config 파일을 오픈해도 깨지지 않는다. 하지만 Dependency Injector를 사용해서 config.yaml을 로드하니 인코딩 코드를 넣을 수 있는 매개변수가 없다.(아래 코드) 유일한 방법은 yaml 파일을 cp949(euc-kr)로 변경하는 것이다.
In Powershell, UTF8 to cp949
C:\> Get-Content config_utf8.yaml -Encoding UTF8 | Set-Content config_cp949.yaml -Encoding Oem
class Container(containers.DeclarativeContainer):
config = providers.Configuration()
config.from_yaml("config_cp949.yaml")
.
| 참고용 |
https://m-falcon.tistory.com/363
https://m.blog.naver.com/uook_/130075169234
https://hahaite.tistory.com/315