R과 Python은 데이터 분석을 위한 상호 보완재라고 생각합니다. 물론 단일 솔루션을 사용하여 데이터 분석을 수행할 수도 있으나, 서로의 장단점을 이해하고 적절하게 섞어 쓰면 좀더 효율적인 데이터 분석을 수행할 수 있습니다. 그래서 이번에는 R을 위한 Python을 설치하는 방법을 다룹니다.
Python의 사전적인 뜻은, 고대 신화속의 파르나수스(Parnassus) 산의 동굴에 살던 큰 뱀
아나콘다(Anaconda)는 데이터 과학과 관련된 데이터 조작 및 분석 용도로 여러 패키지를 묶어 만든 python과 R의 오픈소스 배포본입니다. 복잡한 패키지의 관리 및 설치를 쉽게하기 위한 목적으로 만들어졌습니다.
Anaconda는 https://docs.anaconda.com/anaconda/install/index.html 도움말 페이지를 참고해서 설치합니다. 설치를 위한 배포본은 https://www.anaconda.com/products/distribution에서 다운로드합니다. 필자가 설치할 운영체제는 MacOS이기 때문에 MacOS을 위한 Anaconda3-2020.11-MacOSX-x86_64.pkg를 다운로드하여 설치하였습니다. 2022년 3월 기준으로는 Anaconda3-2021.11-MacOSX-x86_64.pkg을 다운로드할 수 있습니다.
아나콘다의 가상환경(virtual environment)을 conda라 합니다. 여기서는 앞으로 데이터 분석에 사용할 python 가상환경을 생성합니다.
아나콘다를 설치하면 콘솔의 프롬프트가 변경됩니다. 그것은 콘솔에서 현재 어떤 환경에서 작업을 수행하는지를 알려주는 역할을 합니다. 프롬프트에 prefix(접두어)로 (bash)가 추가됨을 알 수 있습니다. 즉, 현재 콘솔에서의 작업 환경은 bash shell 환경이라는 것을 알려줍니다.
macOS 버전 10.15인 카탈리나부터 기본 쉘(Shell) 이 bash에서 zsh(Z shell)로 변경되었습니다. macOS 버전이 11.0.1인 Big Sur를 사용했었던(현재는 12.3인 Monterey를 사용합니다.) 필자의 콘솔에는 프롬프트에 (bash)가 추가되지만 사실은 zsh 환경입니다. 이 (bash)의 의미를 아나콘다의 가상환경이 아닌 사용자의 시스템 콘솔의 쉘 환경을 알려주는 것이라고 이해하면 됩니다.
(bash) $ ps
PID TTY TIME CMD
45033 ttys000 0:00.10 -zsh
다음과 같은 조건의 가상환경을 생성합니다.
(bash) $ conda create --name r-reticulate python=3.7
만들어진 가상환경의 목록을 다음처럼 조회할 수 있습니다. 앞서 만든 r-reticulate라는 이름의 가상환경이 조회되었습니다. 필자의 경우에는 아나콘다가 사용자 홈 디렉토리/opt/anaconda3에 설치되었고 가상환경은 아나콘다 {리렉토리}/envs/{가상환경 이름}으로 생성되었음을 알 수 있습니다.
(bash) $ conda env list
# conda environments:
#
base * /Users/choonghyunryu/opt/anaconda3
r-reticulate /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate
가상 환경에서 작업을 수행하기 위해서는 가상환경을 활성화 해야 합니다. conda activate
명령어를 수행하여 r-reticulate 가상환경을 활성화하면 프롬프트의 (bash)
가 (가상환경 이름)
으로 변경됩니다. 즉, 현재의 작업 환경이 아나콘다에 가상환경에 머물러 있다는 것을 주지시키는 것입니다.
(base) $ conda activate r-reticulate
(r-reticulate) $
가상환경에는 python 3.7 버전이 설치되었으며, 아나콘다의 python임을 알 수 있는 정보가 출력되었습니다.
(r-reticulate) $ python --version
Python 3.7.9
가상환경의 비활성화는 conda deactivate
명령어를 사용한합니다. 예제의 프롬프트를 보면 가상환경에서 시스템 쉘 모드로 변경된 것을 알 수 있습니다.
(r-reticulate) $ conda deactivate
(base) $
R이 python보다 취약한 것은 딥러닝 관련 분야일 것입니다. 그래서 python의 힘을 빌려서 딥러닝을 수행할 수 있는 몇 가지 python 패키지와 R 패키지를 설치합니다.
R에서 딥러닝을 수행할 수 있도록 tensorflow와 keras를 설치합니다. 설치는 두 단계로 진행됩니다.
R 패키지는 R 환경에서 다음과 같이 설치합니다.
install.packages("tensorflow")
install.packages("keras")
우리가 사용할 keras는 뉴럴 네트워크 분석을 위해 tensorflow로 개발된 고수준(high-level) API입니다. 그러므로 tensorflow 설치 없이 동작하지 못합니다. 그래서 tensorflow와 keras를 함께 설치해야 합니다. 만약 tensorflow만 연동할 경우에는 keras를 설치하지 않아도 됩니다.
tensorflow와 keras python 패키지는 사용자 시스템의 python 환경에 설치하지 않고, 다음처럼 아나콘다 가상환경에 설치합니다. method
, envname
인수를 사용해서 앞에서 만들어 놓은 r-reticulate
가상환경에 설치할 수 있습니다. 앞에서 설치한 conda의 python 버전이 3.7이었으므로 conda_python_version
인수에 해당 버전을 지정합니다.
keras 패키지의 install_keras()
함수는 tensorflow와 keras python 패키지를 설치합니다. install_keras()
함수는 내부적으로 tensorflow 패키지의 install_tensorflow()
함수를 호출하기 때문에 install_keras()
함수로 한번에 설치하는 것이 효율적입니다. 아니면 tensorflow 패키지의 install_tensorflow()
함수로 tensorflow를 설치한 후에 keras 패키지의 install_keras()
함수로 keras를 설치할 수도 있습니다.
library(keras)
install_keras(method = "conda", envname = "r-reticulate",
conda_python_version = "3.7")
reticulate 패키지는 R에서 python을 사용할 수 있게 도와주는 패키지입니다. 이 패키지를 이용해서 R에서 conda 가상환경의 리소스를 사용할 수 있는 환경을 설정합니다.
> library(reticulate)
> use_condaenv("r-reticulate", required = TRUE)
> print(py_config())
python: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/bin/python
libpython: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/lib/libpython3.7m.dylib
pythonhome: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate:/Users/choonghyunryu/opt/anaconda3/envs/r-reticulate
version: 3.7.9 (default, Aug 31 2020, 07:22:35) [Clang 10.0.0 ]
numpy: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/lib/python3.7/site-packages/numpy
numpy_version: 1.19.2
NOTE: Python version was forced by use_python function
python tensorflow
패키지의 tf.constant()
를 다음처럼 R의 tensorflow
패키지로 호출해 본다. python 환경에서의 ‘.’이 R 환경에서’$’로 변경되었을 뿐 호출 방법은 유사합니다.
> library(tensorflow)
> tf$constant("Hellow Tensorflow")
## Tensor("Const:0", shape=(), dtype=string)
python keras
패키지는, 간단하게 2행 3열 행렬의 표준화를 수행하는 예제로 설치를 확인합니다.
> library(keras)
> set.seed(123L)
> x <- matrix(rnorm(6), ncol = 3)
> x
## [,1] [,2] [,3]
## [1,] -0.5604756 1.55870831 0.1292877
## [2,] -0.2301775 0.07050839 1.7150650
> normalize(x)
## [,1] [,2] [,3]
## [1,] -0.3373410 0.9381608 0.07781615
## [2,] -0.1329063 0.0407121 0.99029210
가상 환경인 r-reticulate
에 opencv
python 패키지를 설치합니다.
(base) $ conda activate r-reticulate
(r-reticulate) $ conda install opencv
Collecting package metadata (current_repodata.json): done
Solving environment: done
## Package Plan ##
environment location: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate
added / updated specs:
- opencv
The following packages will be downloaded:
package | build
---------------------------|-----------------
cairo-1.14.12 | hc4e6be7_4 860 KB
ffmpeg-4.0 | h01ea3c9_0 21.8 MB
fontconfig-2.13.0 | h5d5b041_1 202 KB
graphite2-1.3.14 | h38d11af_0 80 KB
harfbuzz-1.8.8 | hb8d4a28_0 414 KB
hdf5-1.10.2 | hfa1e0ec_1 3.0 MB
jasper-2.0.14 | h636a363_1 654 KB
libopencv-3.4.2 | h7c891bd_1 18.5 MB
libopus-1.3.1 | h1de35cc_0 480 KB
libvpx-1.7.0 | h378b8a2_0 1.3 MB
mkl-service-2.3.0 | py37h9ed2024_0 40 KB
mkl_fft-1.2.0 | py37hc64f4ea_0 141 KB
mkl_random-1.1.1 | py37h959d312_0 284 KB
numpy-1.19.2 | py37h456fd55_0 21 KB
numpy-base-1.19.2 | py37hcfb5961_0 4.0 MB
opencv-3.4.2 | py37h6fd60c2_1 11 KB
pixman-0.40.0 | haf1e3a3_0 340 KB
py-opencv-3.4.2 | py37h7c891bd_1 1.0 MB
six-1.15.0 | py37hecd8cb5_0 27 KB
------------------------------------------------------------
Total: 53.1 MB
The following NEW packages will be INSTALLED:
blas pkgs/main/osx-64::blas-1.0-mkl
bzip2 pkgs/main/osx-64::bzip2-1.0.8-h1de35cc_0
cairo pkgs/main/osx-64::cairo-1.14.12-hc4e6be7_4
ffmpeg pkgs/main/osx-64::ffmpeg-4.0-h01ea3c9_0
fontconfig pkgs/main/osx-64::fontconfig-2.13.0-h5d5b041_1
freetype pkgs/main/osx-64::freetype-2.10.4-ha233b18_0
gettext pkgs/main/osx-64::gettext-0.19.8.1-hb0f4f8b_2
glib pkgs/main/osx-64::glib-2.66.1-h9bbe63b_0
graphite2 pkgs/main/osx-64::graphite2-1.3.14-h38d11af_0
harfbuzz pkgs/main/osx-64::harfbuzz-1.8.8-hb8d4a28_0
hdf5 pkgs/main/osx-64::hdf5-1.10.2-hfa1e0ec_1
icu pkgs/main/osx-64::icu-58.2-h0a44026_3
intel-openmp pkgs/main/osx-64::intel-openmp-2019.4-233
jasper pkgs/main/osx-64::jasper-2.0.14-h636a363_1
jpeg pkgs/main/osx-64::jpeg-9b-he5867d9_2
libgfortran pkgs/main/osx-64::libgfortran-3.0.1-h93005f0_2
libiconv pkgs/main/osx-64::libiconv-1.16-h1de35cc_0
libopencv pkgs/main/osx-64::libopencv-3.4.2-h7c891bd_1
libopus pkgs/main/osx-64::libopus-1.3.1-h1de35cc_0
libpng pkgs/main/osx-64::libpng-1.6.37-ha441bb4_0
libtiff pkgs/main/osx-64::libtiff-4.1.0-hcb84e12_1
libvpx pkgs/main/osx-64::libvpx-1.7.0-h378b8a2_0
libxml2 pkgs/main/osx-64::libxml2-2.9.10-h7cdb67c_3
lz4-c pkgs/main/osx-64::lz4-c-1.9.2-h79c402e_3
mkl pkgs/main/osx-64::mkl-2019.4-233
mkl-service pkgs/main/osx-64::mkl-service-2.3.0-py37h9ed2024_0
mkl_fft pkgs/main/osx-64::mkl_fft-1.2.0-py37hc64f4ea_0
mkl_random pkgs/main/osx-64::mkl_random-1.1.1-py37h959d312_0
numpy pkgs/main/osx-64::numpy-1.19.2-py37h456fd55_0
numpy-base pkgs/main/osx-64::numpy-base-1.19.2-py37hcfb5961_0
opencv pkgs/main/osx-64::opencv-3.4.2-py37h6fd60c2_1
pcre pkgs/main/osx-64::pcre-8.44-hb1e8313_0
pixman pkgs/main/osx-64::pixman-0.40.0-haf1e3a3_0
py-opencv pkgs/main/osx-64::py-opencv-3.4.2-py37h7c891bd_1
six pkgs/main/osx-64::six-1.15.0-py37hecd8cb5_0
zstd pkgs/main/osx-64::zstd-1.4.5-h41d2c2f_0
Proceed ([y]/n)? y
Downloading and Extracting Packages
hdf5-1.10.2 | 3.0 MB | ################################################################### | 100%
cairo-1.14.12 | 860 KB | ################################################################### | 100%
jasper-2.0.14 | 654 KB | ################################################################### | 100%
numpy-base-1.19.2 | 4.0 MB | ################################################################### | 100%
mkl_random-1.1.1 | 284 KB | ################################################################### | 100%
mkl_fft-1.2.0 | 141 KB | ################################################################### | 100%
py-opencv-3.4.2 | 1.0 MB | ################################################################### | 100%
libopencv-3.4.2 | 18.5 MB | ################################################################### | 100%
libopus-1.3.1 | 480 KB | ################################################################### | 100%
mkl-service-2.3.0 | 40 KB | ################################################################### | 100%
pixman-0.40.0 | 340 KB | ################################################################### | 100%
fontconfig-2.13.0 | 202 KB | ################################################################### | 100%
graphite2-1.3.14 | 80 KB | ################################################################### | 100%
six-1.15.0 | 27 KB | ################################################################### | 100%
libvpx-1.7.0 | 1.3 MB | ################################################################### | 100%
numpy-1.19.2 | 21 KB | ################################################################### | 100%
ffmpeg-4.0 | 21.8 MB | ################################################################### | 100%
harfbuzz-1.8.8 | 414 KB | ################################################################### | 100%
opencv-3.4.2 | 11 KB | ################################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
For attribution, please cite this work as
유충현 (2022, March 29). Dataholic: R을 위한 Python 설치하기. Retrieved from https://choonghyunryu.github.io/2022-03-29-anaconda
BibTeX citation
@misc{유충현2022r을, author = {유충현, }, title = {Dataholic: R을 위한 Python 설치하기}, url = {https://choonghyunryu.github.io/2022-03-29-anaconda}, year = {2022} }