티스토리 뷰

728x90
반응형

문제 상황

mise로 Python을 관리하는 환경에서 Poetry 공식 문서의 설치 명령어를 실행했을 때 발생한 문제다.

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

 

설치 중 다음과 같은 에러가 발생했다.

Retrieving Poetry metadata

# Welcome to Poetry!

Installing Poetry (2.2.1): An error occurred. Removing partial environment.
Poetry installation failed.
See /Users/sskim/poetry-installer-error-ql0xslj3.log for error logs.

에러 로그를 확인하면 다음과 같다.

dyld[39797]: Library not loaded: @executable_path/../lib/libpython3.11.dylib
  Referenced from: <4C4C44F2-5555-3144-A16A-0D0861FD3F67> /Users/sskim/Library/Application Support/pypoetry/venv/bin/python3
  Reason: tried: '/Users/sskim/Library/Application Support/pypoetry/venv/lib/libpython3.11.dylib' (no such file)

원인 분석

Python 동적 라이브러리

Python 인터프리터는 실행 시 동적 라이브러리를 필요로 한다. macOS에서는 .dylib, Linux에서는 .so 확장자를 가진 이 라이브러리가 Python의 핵심 기능을 제공한다.

mise의 Python 설치 구조

mise는 다음과 같은 경로에 Python을 설치한다.

~/.local/share/mise/installs/python/3.11.12/

이 구조는 버전별로 독립적인 디렉토리를 가지며, 사용자 홈 디렉토리 하위에 위치한다.

Poetry 설치 스크립트의 동작 방식

Poetry 공식 설치 스크립트는 다음 순서로 동작한다.

  1. 시스템 Python으로 가상환경 생성
  2. 기본값인 symlinks=False 옵션 사용
  3. Python 바이너리를 가상환경으로 복사
  4. Poetry 설치

문제의 핵심

복사된 Python 바이너리는 @executable_path/../lib/libpython3.11.dylib와 같은 상대 경로를 포함한다. 이 경로는 원본 Python 설치 위치를 기준으로 계산되는데, 복사된 바이너리가 새로운 위치에서 실행되면 경로 불일치가 발생한다.

mise의 동적 경로 구조에서는 이 라이브러리를 찾을 수 없기 때문에 에러가 발생하는 것이다.

Homebrew나 시스템 Python에서는 왜 문제가 없을까

Homebrew Python:

  • /opt/homebrew/...와 같은 고정된 경로에 설치
  • 시스템 전역 라이브러리 경로 사용
  • 바이너리 복사 시에도 경로 일관성 유지

시스템 Python:

  • 절대 경로가 변경되지 않음
  • 시스템 라이브러리 검색 경로에 포함

mise Python:

  • 사용자 홈 디렉토리의 동적 경로
  • 버전별로 독립된 경로 구조
  • 복사 시 상대 경로 참조 불가능

이처럼 mise는 구조적으로 바이너리 복사 방식과 호환성 문제가 있다.

해결 방법

1. symlinks=True 옵션으로 설치 (권장)

가장 간단하고 확실한 방법이다.

curl -sSL https://install.python-poetry.org | sed 's/symlinks=False/symlinks=True/' | python3 -

이 방법은 Python 바이너리를 복사하는 대신 심볼릭 링크를 생성한다. 심볼릭 링크는 원본 파일을 직접 가리키므로 원본 Python의 라이브러리 경로를 그대로 사용할 수 있다.

장점:

  • mise Python 환경에서 완벽하게 작동
  • Python 버전 업데이트 시에도 안정적
  • 추가 설정 불필요

2. pipx 사용

pipx는 Python 애플리케이션을 격리된 환경에서 실행하는 도구다.

# pipx 설치
python3 -m pip install --user pipx
python3 -m pipx ensurepath

# Poetry 설치
pipx install poetry

pipx는 라이브러리 경로 문제를 더 잘 처리하며, 여러 Python 도구를 독립적으로 관리할 수 있다. 다만 Poetry 공식 설치 방법은 아니며 추가 도구 설치가 필요하다.

검증

설치 후 다음 명령어로 확인한다.

poetry --version

정상적으로 설치되었다면 다음과 같이 출력된다.

Poetry (version 2.2.1)

관련 이슈

이 문제는 mise뿐만 아니라 다음 환경에서도 발생할 수 있다.

  • pyenv: 비슷한 버전 관리 방식을 사용
  • asdf: 다양한 런타임 버전 관리 도구
  • 사용자 정의 Python 빌드: 비표준 경로에 설치된 경우

정리

mise와 같은 동적 경로 기반 버전 관리 도구를 사용할 때는 다음을 기억하자.

  1. symlinks=True 옵션을 사용한 설치가 가장 안정적이다
  2. pipx와 같은 전용 도구를 활용하는 것도 좋은 대안이다
  3. Python 바이너리 복사 대신 심볼릭 링크 사용이 핵심이다

이 방법으로 mise 환경에서도 Poetry를 문제없이 사용할 수 있다.

참고

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형
250x250