[Error] Installing pyenv for X86 & ARM

1 minute read


Installing pyenv for X86 & ARM

  • 상황
    • 사내 clue-api M1 pyenv로 환경설정 후, requirements에 있는 다수의 module 설치에서 에러 발생
    • 현재 컴퓨터에는 M1 pyenv가 설치되어 있음
  • 해결: X86용 pyenv로 환경설정

Solution

# prerequisite
# pandas 관련 모듈 사용한다면 그냥 pyenv 설치 시 lzma 관련 이슈 생김
brew86 install xz
# iTerm 복사 후 iTerm-i386 만듦
# iTerm-386 우클릭 - Get-Info - Open using Rosetta 클릭

# iTerm-i386 에서 x86 pyenv 설치
brew install pyenv

# pyenv 입력 후 pyenv-virtualenv 없을 시 다음 명령어 입력
brew install --HEAD pyenv-virtualenv

# .zprofile에 다음 내용 넣기
eval "$(pyenv init --path)"

# .zshrc에 다음 내용 넣기
# pyenv (ARM & x86)
if [ $(arch) = "i386" ]; then
    eval "$(/usr/local/bin/brew shellenv)"
    alias brew86="arch -x86_64 /usr/local/bin/brew"
    alias pyenv86="arch -x86_64 pyenv"
    alias python3="/Users/zsupark/.pyenv-i386/shims/python3"
    export PYENV_ROOT=~/.pyenv-i386
    export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl@1.1/lib/
else
    eval "$(/opt/homebrew/bin/brew shellenv)"
    export LIBRARY_PATH=$LIBRARY_PATH:/opt/homebrew/opt/openssl@1.1/lib/
fi

if command -v pyenv 1>/dev/null 2>&1; then
    if [ $(arch) = "i386" ]; then
        export PATH="$HOME/.pyenv-i386/bin:$PATH"
        eval "$(pyenv86 init -)"
        eval "$(pyenv86 virtualenv-init -)"
    else
        export PATH="$HOME/.pyenv/bin:$PATH"
        eval "$(pyenv init -)"
        eval "$(pyenv virtualenv-init -)"
    fi
fi

# 적용
source ~/.zshrc

# python 3.8.5 다운
VERSION_ALIAS="3.8.5_x86" \
pyenv86 install -v 3.8.5

# clue-api용 가상환경 생성
pyenv virtualenv 3.8.5_x86 .clue-api

# requirements에 필요한 모듈 설치
pip3 install wheel
brew86 install postgres

# clue-api requirements 설치
pip install -r requirements.txt
  • ARM용 pyenv 설치
    # 3.9.x 버전 아래는 에러 발생
    bash pyenv install --patch 3.8.6 <<(curl -sSL https://raw.githubusercontent.com/Homebrew/formula-patches/113aa84/python/3.8.3.patch\?full_index\=1)
    

ref