문제 상황
부트캠프에서 하던 실습을 집에서 내 노트북으로 하기 위해 깃허브에 코드를 올려놨다.
부트캠프에서는 Window11 운영체제 기반 노트북을 제공해주고, 내 노트북은 MacOS 운영체제라 requirements.txt 파일에서 오류가 발생했다.
1. pywin32 에러
- pywin32는 윈도우 관련 패키지라 macos에서는 오류를 발생시킨다.
해결
- 운영체제 별로 다른 모듈을 다운로드 받도록 sys_platform == "win32"을 사용해준다.
- pywin32 모듈을 다운받지 않으니 macos일 때는 pyobjc 모듈을 다운받는다.
- pywin32: Window API에 대한 Python 바인딩을 제공
- pyobjc: Objective-C와 Python 간의 브릿지 역할로 MacOS의 네이티브 API를 사용할 수 있게 함
Pywin32 에러는 해결되었으나...
2. Error: subprocess-exited-with-error 발생
읽어보니 rust 라이브러리가 없어서 발생한 오류 같았다. (의존성 문제)
해결
brew install rust
이렇게 pywin32 에러 소동이 지나가는가 했는데
3. 이번엔 error: failed building wheel for pywinpty 발생
이것도 win이 들어간게 pywin32 소동 때처럼 윈도우 관련 패키지라 발생하는 오류 같았다.
해결
- pywinpty 모듈에 sys_platform == "win32" 추가
아래처럼 윈도우 운영체제 일 때만 설치하도록 변경하고 pip install -r requirements.txt 진행!
이렇게 했더니 install이 오류 없이 완료되고, 내 맥북에도 window와 같은 환경이 이식되었다!
느낀 점
운영체제가 다를 때 같은 환경을 이식하려면 여러 에러를 마주해야 하는구나,, 이래서 docker image로 말아서 공유하는게 편하구나,, 오류를 해결하는데 오래 걸리진 않았지만 다시 한 번 도커의 편리함을 느끼게 해준 오류였습니다!