> curl --version
# curl 이 설치되어 있지 않을 경우
> sudo apt-get install curl
# curl 이 설치되어 있을 경우
> curl https://pyenv.run | bash
cmd를 열어 상단과 같이 진행해주자. curl 명령어를 통해 pyenv 를 설치하는 것인데, 이러면
home/.pyenv의 위치에 pyenv가 설치된다.
그러나 이 때
pyenv -version
명령어를 실행해봐도 pyenv가 실행되지 않는데, 이는 환경 변수를 추가해주지 않았기 때문이다.
환경 변수를 추가하기 위해 bashrc를 열어서 편집하자. zshrc를 이용할 경우, 이를 이용해도 무방하다.
# bashrc 오픈
> vi ~/.bashrc
O로 bashrc를 편집할 수 있다.
# pyenv setting 23.03.24
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
eval "$(pyenv virtualenv-init --path)"
esc를 누른 후
:wq를 눌러 bashrc의 변경된 내용을 저장하자.
bashrc가 변경된 이후에는 터미널 창을 리로드하거나, 혹은 변경된 bashrc를 새로 적용해야한다.
터미널 창을 열었다 닫지 않고 변경 내용을 적용하는 방법은 다음과 같다.
> source ~/.bashrc
이 명령어를 실행하고 나면 profile에 뭘 어쩌라~라는 식으로 cmd창에 뜰텐데 이를 따라주자.
마찬가지로 /.profile을 연다.
> vi ~/.profile
O를 통해 bashrc를 불러오기 전 부분에 pyenv root를 추가해주자.
# pyenv setting 23.03.24
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
내 profile은 위와 같이 나온다.
이제 profile 변경 내용을 재적용해보자.
> source ~/.profile
> pyenv --version
pyenv 2.3.16
을 해보면 pyenv 가 잘 설치된 걸 알 수 있다.
이제 pyenv를 이용해 virtualenv를 깔아보자.
pyenv install -l 명령어로 설치 가능한 pyenv 버전 리스트를 볼 수 있다.
필자는 오버엔지니어링 할 생각도 없고, 일단 흔하게 쓰는 3.6이나 3.8이 각종 django 라이브러리와 편하게 호환된 경험이 있기에 3.8-dev를 설치해보고자 한다.
pyenv install 3.8-dev
에러가 떴다.
BUILD FAILED (Ubuntu 18.04 using python-build 2.0.2)
이 에러를 해결하기 위해
udo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
명령어를 실행했다.
출처: https://www.codeit.kr/community/questions/UXVlc3Rpb246NjBkOWVlZTBkYzA3ZTU2ODkxNWE3NGQx
그리고 다시
pyenv install 3.8-dev 를 해줬다.
설치는 된다. 하지만 이 에러, 뭔가 내 심금을 울린다. 지금 귀찮다고 남겨놨다간 필시 훗날 내 발목을 잡을 것이다.
에러메시지
/root/.pyenv/libexec/pyenv-latest: 줄 39: printf: 쓰기 오류: 파이프가 깨어짐
Cloning https://github.com/python/cpython...
Installing Python-3.8-dev...
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/root/.pyenv/versions/3.8-dev/lib/python3.8/lzma.py", line 27, in <module>
from _lzma import *
ModuleNotFoundError: No module named '_lzma'
WARNING: The Python lzma extension was not compiled. Missing the lzma lib?
Installed Python-3.8-dev to /root/.pyenv/versions/3.8-dev
찾아보니 libzma라는, 데이터 압축에 쓰이는 알고리즘이 있었다.
https://snepbnt.tistory.com/entry/python-error-Could-not-import-the-lzma-module-Your-installed-Python-is-incomplete
그래서 이걸 다시 설치해주기로 했다.
sudo apt-get install liblzma-dev