상세 컨텐츠

본문 제목

🐍 Poetry 설치 중 PermissionError? 나도 그랬다

개발일기

by kimrindev 2025. 6. 13. 02:05

본문

요즘 Python으로 API 서버나 간단한 CLI 도구를 만들 일이 많아지면서, Python 생태계도 슬슬 익숙해져야겠다는 생각이 들었다. 그러다 발견한 도구가 바로 Poetry. 처음엔 “뭐지 이게? pip이랑 venv 쓰면 되는 거 아냐?” 싶었는데, 조금만 살펴보니 Swift의 SPM이랑 굉장히 유사한 방식으로 프로젝트를 관리할 수 있게 도와주는 툴이었다.

 

그래서 설치를 시작했는데…

바로 PermissionError를 맞았다.

 

 

Poetry는 뭘까?

 

Poetry는 Python 생태계에서 요즘 가장 핫한 패키지 및 의존성 관리 도구다. 아래 표를 보면 어떤 개발자에게 적합한 도구인지 직관적으로 이해할 수 있다:

 

기능 설명
패키지 관리 requests, flask 등 외부 라이브러리 설치
버전 고정 requests = "^2.31.0"처럼 명시적 버전 관리
가상환경 생성 프로젝트 별로 독립된 venv 자동 생성
빌드/배포 지원 poetry build, poetry publish
표준화된 설정 파일 pyproject.toml 하나로 모든 설정

 

Swift의 SPM처럼 하나의 파일로 모든 의존성과 스크립트를 정의할 수 있어서 팀 프로젝트나 협업에서도 매우 유용해 보였다.

 

 

문제 발생: PermissionError

Poetry 설치 스크립트를 실행하자마자 아래와 같은 에러가 떴다.

 

PermissionError: [Errno 13] Permission denied: '/Users/bloom/.local/bin'

이게 뭘까? .local/bin 디렉토리에 뭔가를 설치하려는데 권한이 없단다. 내 홈 디렉토리인데 왜?

 

알고 보니 macOS에서 .local/bin은 가끔 루트(root) 소유가 되어버리는 경우가 있다고 한다. 다음과 같은 상황이 그 원인일 수 있다고 한다:

 

  • 과거에 Python 설치를 sudo로 진행한 경우
  • brew.local 디렉토리를 생성할 때 root로 만들어버린 경우
  • 타임머신 복원이나 사용자 계정 이전을 한 경우

게다가 macOS에는 **SIP(System Integrity Protection)**이라는 보안 메커니즘이 있어서, 민감한 경로에 대해 Apple이 감시하는 것처럼 오인받으면 설치 자체가 막힐 수도 있다고 한다.

 

💡 참고: sudo로 설치하면 해당 디렉토리 소유권이 root가 되어버림 → 이후 일반 유저 권한으로 접근 불가

 

 

 

권한 설계 이해하기

 

macOS의 파일 시스템 권한 구조를 간단히 정리하면 다음과 같다:

 

 

경로 접근권한 설명
/System, /usr/bin 관리자(root) 전용 시스템 핵심 파일
/Applications 관리자만 설치 가능 전역 앱 설치 위치
~/ (홈 디렉토리) 사용자 본인만 개인 설정 및 개발환경
~/.local/bin 원래는 사용자 전용 권한 꼬이면 root가 소유자가 됨

 

즉, .local/bin도 원래는 내가 자유롭게 쓰는 경로지만, 한번이라도 sudo로 뭔가 설치했거나 특수한 상황이 있었다면 root가 소유하게 되어 문제가 생길 수 있다는 것이다.

 

 

 

그럼에도 불구하고 설치해야 하는 이유

처음엔 좀 무섭기도 했다. “내가 소유권을 가지는만큼 자유롭지만 그만큼 위험한 거 아냐?”

맞는 말이다. 하지만 Poetry는 그만한 가치가 있는 도구다.

 

  • 프로젝트별 독립 환경을 만들어서 다른 프로젝트와 충돌을 방지해주고
  • 정확한 버전 고정과 일관된 빌드 환경을 제공하며
  • pyproject.toml 파일 하나로 모든 설정을 통합할 수 있고
  • 배포도 쉽게 할 수 있으니까

 

그래서 결론은 그래도 해야지 뭐. 

 

 

결론

Poetry는 Swift 개발자인 나에게도 꽤나 익숙한 개발 방식으로 Python 프로젝트를 관리하게 해주는 좋은 도구였다. 단, 설치 과정에서 macOS의 권한 시스템을 이해하지 못하면 막힐 수 있다는 걸 배웠다.

 

혹시 설치 중 비슷한 PermissionError를 만났다면, 다음 순서를 참고하자:

1. local/bin 디렉토리의 소유자를 확인하고

ls -l ~/.local

 

2. 필요 시 소유자를 변경

sudo chown -R $(whoami) ~/.local

 

3. Poetry 설치 다시 시도

curl -sSL https://install.python-poetry.org | python3 -

 

 

Poetry 설치 하나로도 이렇게 많은 걸 배우게 될 줄은 몰랐다. Python 생태계로 넘어가는 문턱에서 이런 경험을 남겨두면, 나중에 돌아봤을 때 좋은 기록이 될 것 같다.

이 글이 같은 문제를 겪는 누군가에겐 작은 도움이라도 되기를.

 

'개발일기' 카테고리의 다른 글

TMDB에서 생긴일 -3 (PassthroughSubject)  (0) 2025.05.24
TMDB에서 생긴일 - 2  (0) 2025.05.24
TMDB에서 생긴일 - 1  (0) 2025.05.11

관련글 더보기