[우분투]pyenv를 통한 파이썬(python) 가상환경 구축 및 텐서플로, 케라스 설치

업데이트:

[우분투] pyenv 를 이용해 파이썬 가상환경 구축하기(최근 업데이트: 2023.09.01)

제가 현재 사용중인 환경은 우분투(ubuntu) 입니다.

1. 사전 환경 업데이트

$ sudo apt update
$ sudo apt dist-upgrade

2. pyenv 설치하기

전체적인 설치 과정은 https://github.com/pyenv/pyenv-installer 참고 부탁드립니다.

2.1. 사전 프로그램 설치

본격적인 pyenv 설치에 앞서 사전 프로그램을 설치해야 해야 합니다. 2023년 8월 현재는 사전 프로그램 설치 안해도 괜찮다는 식으로 말하지만 사실은 설치해야합니다. 사전 프로그램 설치 안하면 파이썬 가상환경 설치가 안되오니 꼭 설치하시기 바랍니다.

https://github.com/pyenv/pyenv/wiki#suggested-build-environment

위 사이트를 참조하여 다음 코드를 실행합니다. 아래 코드 실행하면 중간에 Y/N 묻는거 나오는데 Y 입력하시면 됩니다.

$ sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

...(중략)
Setting up libxslt1-dev:amd64 (1.1.29-5ubuntu0.2) ...
Setting up libxmlsec1-dev (1.2.25-1build1) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for install-info (6.5.0.dfsg.1-2) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...
Processing triggers for systemd (237-3ubuntu10.47) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

다음 단계로 넘어가기 전에 혹시나 git이 설치 되지 않았다면 git을 설치해줍니다. git 설치시에도 중간에 Y/n 묻는데 Y를 입력해줍니다.

$ sudo apt install git-all
...(중략)
Need to get 48.2 MB of archives.
After this operation, 264 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...(중략)
+ emacs25 -batch -q -no-site-file -f batch-byte-compile git.el git-blame.el
Setting up git-all (1:2.17.1-1ubuntu0.9) ...
Processing triggers for libgdk-pixbuf2.0-0:amd64 (2.36.11-2) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

2.2. pyenv 설치

다음 코드를 입력하면 pyenv가 설치 됩니다.

$ curl https://pyenv.run | bash
Cloning into '/home/ubuntu/.pyenv'...
remote: Enumerating objects: 876, done.
remote: Counting objects: 100% (876/876), done.
...(중략)

위 코드를 실행하면 설치 후 마지막 부분에 다음과 같은 메시지가 뜹니다.

WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by appending
# the following to
~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
and ~/.bashrc (for interactive shells) :

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

# Restart your shell for the changes to take effect.

# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:

eval "$(pyenv virtualenv-init -)"

위 메시지는 ~/.bashrc에

eval "$(pyenv virtualenv-init -)"

를 추가하라는 뜻입니다. 그러나 위 한줄만 추가하면 되는 것은 아니고

~/.bashrc에 다음과 같은 내용을 추가해줍니다.

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

그리고나서 다음 코드를 입력해 쉘을 재시작합니다.

$ exec $SHELL

3. pyenv 설치 확인

$ pyenv
pyenv 2.3.25
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   --version   Display the version of pyenv
   activate    Activate virtual environment
   commands    List all available pyenv commands
   deactivate   Deactivate virtual environment
   doctor      Verify pyenv installation and development tools to build pythons.
   exec        Run an executable with the selected Python version
   global      Set or show the global Python version(s)
   help        Display help for a command
   hooks       List hook scripts for a given pyenv command
   init        Configure the shell environment for pyenv
   install     Install a Python version using python-build
   local       Set or show the local application-specific Python version(s)
   prefix      Display prefixes for Python versions
   rehash      Rehash pyenv shims (run this after installing executables)
   root        Display the root directory where versions and shims are kept
   shell       Set or show the shell-specific Python version
   shims       List existing pyenv shims
   uninstall   Uninstall Python versions
   version     Show the current Python version(s) and its origin
   version-file   Detect the file that sets the current pyenv version
   version-name   Show the current Python version
   version-origin   Explain how the current Python version is set
   versions    List all Python versions available to pyenv
   virtualenv   Create a Python virtualenv using the pyenv-virtualenv plugin
   virtualenv-delete   Uninstall a specific Python virtualenv
   virtualenv-init   Configure the shell environment for pyenv-virtualenv
   virtualenv-prefix   Display real_prefix for a Python virtualenv version
   virtualenvs   List all Python virtualenvs found in `$PYENV_ROOT/versions/*'.
   whence      List all Python versions that contain the given executable
   which       Display the full path to an executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

쉘에서 pyenv 를 실행했을때 위와 같은 화면이 나온다면 잘 설치된 것입니다.

4. 파이썬 설치

현재 설치 가능한 파이썬 버전을 확인해 봅시다.

$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7

저는 현재 가장 최신 파이썬 버전인 3.11.4를 설치하겠습니다.

$ pyenv install 3.11.4
Downloading Python-3.11.4.tar.xz...
-> https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz
Installing Python-3.11.4...
(랙 걸린거 아님, 조금 기다려야함)
Installed Python-3.11.4 to /home/ubuntu/.pyenv/versions/3.11.4

파이썬 설치후 설치된 파이썬의 버전을 확인해 봅시다.

$ pyenv versions
  system(set by /home/cheolwon/.pyenv/version)
* 3.11.4  

5. 파이썬 가상환경 설치

가상환경 생성 문법은 아래와 같습니다.
pyenv virtualenv
저는 3.11.4 버전의 가상환경이므로 py3_11_4 라는 가상환경이름으로 짓겠습니다.

$ pyenv virtualenv 3.11.4 py3_11_4

이렇게 파이썬 가상환경이 설치 되었습니다. 가상환경 설치가 잘 되었는지 확인해 봅시다.

$ pyenv versions
* system (set by /home/ubuntu/.pyenv/version)
  3.11.4
  3.11.4/envs/py3_11_4
  py3_11_4 --> /home/ubuntu/.pyenv/versions/3.11.4/envs/py3_11_4

또한 아래로 가시면 방금설치하신 가상환경 디렉토리를 확인하실수 있습니다.

$ cd ~/.pyenv/versions

7. 가상환경 실행, 해제, 삭제

가상환경 사용하기(접속하기)

$ pyenv activate py3_11_4

가상환경 해제하기 (빠져나오기)

$ source deactivate

가상환경이나 파이썬 삭제하기

$ pyenv uninstall py3_11_4
$ pyenv uninstall 3.11.4

8. 가상환경 실행 후 라이브러리 설치하기

현재 설치된 라이브러리 리스트

$ pyenv activate py3_11_4
(py3_11_4)$ pip list

numpy를 설치해봅시다.

$ pyenv activate py3_11_4
(py3_11_4)$ pip install numpy

pandas 설치

(py3_11_4)$ pip install pandas

matplotlib 설치

(py3_11_4)$ pip install matplotlib

텐서플로(tensorflow) 설치

(py3_11_4)$ pip install tensorflow==2.6.0 

케라스(keras) 설치

(py3_11_4)$ pip install keras

파이토치 설치(CPU) 버전

(py3_11_4)$ pip install torch torchvision torchaudio

플라스크(flask), 장고(django) 설치

(py3_11_4)$ pip install flask
(py3_11_4)$ pip install django 
  
(py3_11_4)$ pip install gunicorn
(py3_11_4)$ pip install uwsgi  

PostgreSQL과 연결하기 위한 psycopg2 설치

(py3_11_4)$ pip install psycopg2                #만약 이게 설치 안되면 아래 명령어로 설치
(py3_11_4)$ pip install psycopg2-binary

주피터 노트북 설치

(py3_11_4)$ pip install jupyter

주피터 노트북 실행

(py3_11_4)$ jupyter notebook

부록.

텐서플로 버전

import tensorflow as tf
tf.__version__
'2.6.0'