R과 Python은 데이터 분석을 위한 상호 보완재라고 생각합니다. 물론 단일 솔루션을 사용하여 데이터 분석을 수행할 수도 있으나, 서로의 장단점을 이해하고 적절하게 섞어 쓰면 좀더 효율적인 데이터 분석을 수행할 수 있습니다. 그래서 이번에는 R을 위한 Python을 설치하는 방법을 다룹니다.
Python의 사전적인 뜻은, 고대 신화속의 파르나수스(Parnassus) 산의 동굴에 살던 큰 뱀1이라고 합니다. 또한 Python 배포본인 아나콘다(Anaconda)는 비단뱀의 일종입니다. 그리고 R과 Python을 연동하는 R 패키지인 reticulate는 그물무늬비단뱀입니다. 디지털 세상에서의 암묵적인 작명법에 의해서 비단뱀이 지금도 많은 데이터 과학자들의 입에 오르내리고 있습니다.
아나콘다(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)의 의미를 아나콘다의 가상환경이 아닌 사용자의 시스템 콘솔의 쉘 환경을 알려주는 것이라고 이해하면 됩니다.
$ ps
(bash)
PID TTY TIME CMD45033 ttys000 0:00.10 -zsh
다음과 같은 조건의 가상환경을 생성합니다.
$ conda create --name r-reticulate python=3.7 (bash)
만들어진 가상환경의 목록을 다음처럼 조회할 수 있습니다. 앞서 만든 r-reticulate라는 이름의 가상환경이 조회되었습니다. 필자의 경우에는 아나콘다가 사용자 홈 디렉토리/opt/anaconda3에 설치되었고 가상환경은 아나콘다 {리렉토리}/envs/{가상환경 이름}으로 생성되었음을 알 수 있습니다.
$ conda env list
(bash) # conda environments:
#
* /Users/choonghyunryu/opt/anaconda3
base -reticulate /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate r
가상 환경에서 작업을 수행하기 위해서는 가상환경을 활성화 해야 합니다. conda activate
명령어를 수행하여 r-reticulate 가상환경을 활성화하면 프롬프트의 (bash)
가 (가상환경 이름)
으로 변경됩니다. 즉, 현재의 작업 환경이 아나콘다에 가상환경에 머물러 있다는 것을 주지시키는 것입니다.
$ conda activate r-reticulate
(base) -reticulate) $ (r
가상환경에는 python 3.7 버전이 설치되었으며, 아나콘다의 python임을 알 수 있는 정보가 출력되었습니다.
-reticulate) $ python --version
(r3.7.9 Python
가상환경의 비활성화는 conda deactivate
명령어를 사용한합니다. 예제의 프롬프트를 보면 가상환경에서 시스템 쉘 모드로 변경된 것을 알 수 있습니다.
-reticulate) $ conda deactivate
(r$ (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())
: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/bin/python
python: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/lib/libpython3.7m.dylib
libpython: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate:/Users/choonghyunryu/opt/anaconda3/envs/r-reticulate
pythonhome: 3.7.9 (default, Aug 31 2020, 07:22:35) [Clang 10.0.0 ]
version: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate/lib/python3.7/site-packages/numpy
numpy: 1.19.2
numpy_version
: Python version was forced by use_python function NOTE
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 패키지를 설치합니다.
$ conda activate r-reticulate
(base) -reticulate) $ conda install opencv
(rmetadata (current_repodata.json): done
Collecting package : done
Solving environment
## Package Plan ##
: /Users/choonghyunryu/opt/anaconda3/envs/r-reticulate
environment location
/ updated specs:
added - opencv
:
The following packages will be downloaded
| build
package ---------------------------|-----------------
-1.14.12 | hc4e6be7_4 860 KB
cairo-4.0 | h01ea3c9_0 21.8 MB
ffmpeg-2.13.0 | h5d5b041_1 202 KB
fontconfig-1.3.14 | h38d11af_0 80 KB
graphite2-1.8.8 | hb8d4a28_0 414 KB
harfbuzz-1.10.2 | hfa1e0ec_1 3.0 MB
hdf5-2.0.14 | h636a363_1 654 KB
jasper-3.4.2 | h7c891bd_1 18.5 MB
libopencv-1.3.1 | h1de35cc_0 480 KB
libopus-1.7.0 | h378b8a2_0 1.3 MB
libvpx-service-2.3.0 | py37h9ed2024_0 40 KB
mkl-1.2.0 | py37hc64f4ea_0 141 KB
mkl_fft-1.1.1 | py37h959d312_0 284 KB
mkl_random-1.19.2 | py37h456fd55_0 21 KB
numpy-base-1.19.2 | py37hcfb5961_0 4.0 MB
numpy-3.4.2 | py37h6fd60c2_1 11 KB
opencv-0.40.0 | haf1e3a3_0 340 KB
pixman-opencv-3.4.2 | py37h7c891bd_1 1.0 MB
py-1.15.0 | py37hecd8cb5_0 27 KB
six------------------------------------------------------------
: 53.1 MB
Total
:
The following NEW packages will be INSTALLED
/main/osx-64::blas-1.0-mkl
blas pkgs/main/osx-64::bzip2-1.0.8-h1de35cc_0
bzip2 pkgs/main/osx-64::cairo-1.14.12-hc4e6be7_4
cairo pkgs/main/osx-64::ffmpeg-4.0-h01ea3c9_0
ffmpeg pkgs/main/osx-64::fontconfig-2.13.0-h5d5b041_1
fontconfig pkgs/main/osx-64::freetype-2.10.4-ha233b18_0
freetype pkgs/main/osx-64::gettext-0.19.8.1-hb0f4f8b_2
gettext pkgs/main/osx-64::glib-2.66.1-h9bbe63b_0
glib pkgs/main/osx-64::graphite2-1.3.14-h38d11af_0
graphite2 pkgs/main/osx-64::harfbuzz-1.8.8-hb8d4a28_0
harfbuzz pkgs/main/osx-64::hdf5-1.10.2-hfa1e0ec_1
hdf5 pkgs/main/osx-64::icu-58.2-h0a44026_3
icu pkgs-openmp pkgs/main/osx-64::intel-openmp-2019.4-233
intel/main/osx-64::jasper-2.0.14-h636a363_1
jasper pkgs/main/osx-64::jpeg-9b-he5867d9_2
jpeg pkgs/main/osx-64::libgfortran-3.0.1-h93005f0_2
libgfortran pkgs/main/osx-64::libiconv-1.16-h1de35cc_0
libiconv pkgs/main/osx-64::libopencv-3.4.2-h7c891bd_1
libopencv pkgs/main/osx-64::libopus-1.3.1-h1de35cc_0
libopus pkgs/main/osx-64::libpng-1.6.37-ha441bb4_0
libpng pkgs/main/osx-64::libtiff-4.1.0-hcb84e12_1
libtiff pkgs/main/osx-64::libvpx-1.7.0-h378b8a2_0
libvpx pkgs/main/osx-64::libxml2-2.9.10-h7cdb67c_3
libxml2 pkgs-c pkgs/main/osx-64::lz4-c-1.9.2-h79c402e_3
lz4/main/osx-64::mkl-2019.4-233
mkl pkgs-service pkgs/main/osx-64::mkl-service-2.3.0-py37h9ed2024_0
mkl/main/osx-64::mkl_fft-1.2.0-py37hc64f4ea_0
mkl_fft pkgs/main/osx-64::mkl_random-1.1.1-py37h959d312_0
mkl_random pkgs/main/osx-64::numpy-1.19.2-py37h456fd55_0
numpy pkgs-base pkgs/main/osx-64::numpy-base-1.19.2-py37hcfb5961_0
numpy/main/osx-64::opencv-3.4.2-py37h6fd60c2_1
opencv pkgs/main/osx-64::pcre-8.44-hb1e8313_0
pcre pkgs/main/osx-64::pixman-0.40.0-haf1e3a3_0
pixman pkgs-opencv pkgs/main/osx-64::py-opencv-3.4.2-py37h7c891bd_1
py/main/osx-64::six-1.15.0-py37hecd8cb5_0
six pkgs/main/osx-64::zstd-1.4.5-h41d2c2f_0
zstd pkgs
Proceed ([y]/n)? y
Downloading and Extracting Packages-1.10.2 | 3.0 MB | ################################################################### | 100%
hdf5-1.14.12 | 860 KB | ################################################################### | 100%
cairo-2.0.14 | 654 KB | ################################################################### | 100%
jasper-base-1.19.2 | 4.0 MB | ################################################################### | 100%
numpy-1.1.1 | 284 KB | ################################################################### | 100%
mkl_random-1.2.0 | 141 KB | ################################################################### | 100%
mkl_fft-opencv-3.4.2 | 1.0 MB | ################################################################### | 100%
py-3.4.2 | 18.5 MB | ################################################################### | 100%
libopencv-1.3.1 | 480 KB | ################################################################### | 100%
libopus-service-2.3.0 | 40 KB | ################################################################### | 100%
mkl-0.40.0 | 340 KB | ################################################################### | 100%
pixman-2.13.0 | 202 KB | ################################################################### | 100%
fontconfig-1.3.14 | 80 KB | ################################################################### | 100%
graphite2-1.15.0 | 27 KB | ################################################################### | 100%
six-1.7.0 | 1.3 MB | ################################################################### | 100%
libvpx-1.19.2 | 21 KB | ################################################################### | 100%
numpy-4.0 | 21.8 MB | ################################################################### | 100%
ffmpeg-1.8.8 | 414 KB | ################################################################### | 100%
harfbuzz-3.4.2 | 11 KB | ################################################################### | 100%
opencv: done
Preparing transaction: done
Verifying transaction: done Executing transaction
파이썬이란 무엇인가?. https://ghgus0702.tistory.com/9↩︎
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} }