RStudio Quarto 문서에서 파이썬 코드 실행하기
RStudio에서 Quarto 문서 작성 시 파이썬 코드가 실행되도록 환경 설정 절차를 알아 본다.
RStudio에서 Quarto 문서 작성 시 파이썬 코드가 실행되도록 관련 환경을 설정한다.
전제
- 리눅스 환경
- RStudio, Quarto 설치 완료
- Python, uv 설치 완료
전체 구조는 다음과 같다.
uv로 가상환경 구성- 필요 python 패키지 설치
reticulate파이썬 경로 설정- 파이썬 코드 실행 확인
- GitHub Actions 자동 빌드 및 배포 확인
Quarto 프로젝트 생성
RStudio나 Quarto로 프로젝트를 생성한다. 예제는 Quarto Book 프로젝트로 설명한다.
1
2
3
mkdir python4da
cd python4da
quarto create-project .
uv 가상환경 구성
uv 설치 전이면 아래 명령을 통해 설치한다.
1
2
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv --version 명령어로 정상 설치되었는지 확인한다.
가상환경을 생성한다.
1
uv venv
만약 이전에 가상환경이 생성되어 있다면 아래와 같이 모두 삭제 후 새로 설치한다. 이는 불필요한 환경 충돌을 방지한다.
1
rm -rf .venv
가상환경이 생성되었다면 가상환경을 활성화하고 파이썬 경로를 확인한다.
1
2
source .venv/bin/activate
which python
정상적으로 가상환경이 생성되었다면 파이썬 경로는 아래와 같이 출력된다.
1
.../python4da/.venv/bin/python
필요 패키지 설치
생성된 가상환경에서 필요한 패키지를 설치한다.
1
uv pip install pandas palmerpenguins setuptools
패키지가 정상적으로 설치되었는지 확인한다. 다음 예제는 palmerpenguins 패키지를 설치하고 제공하는 데이터셋 일부를 출력하는 코드이다.
1
python -c "from palmerpenguins import load_penguins; print(load_penguins().head())"
reticulate 환경 설정
RStudio Quarto에서 파이썬 코드를 실행하기 위해서는 reticulate를 사용한다. reticulate는 실행할 파이썬을 선택하는데 가상환경이 아닌 다른 경로에 있는 파이썬을 선택할 수도 있다. 이를 가상환경 경로로 강제 지정한다.
1
2
3
4
reticulate::use_python(
"/home/yk/Projects/python4da/.venv/bin/python",
required = TRUE
)
설정한 가상환경에 위치한 파이썬이 정상 설정되었는지 확인한다.
1
reticulate::py_config()
python: /home/yk/Projects/python4da/.venv/bin/python 이와 같이 생성한 가상환경으로 경로가 설정되어야 한다.
Quarto 환경 설정
_quarto.yml 파일에 실행할 파이썬 코드를 아래와 같이 지정한다.
1
2
3
4
5
project:
type: book
execute:
python: .venv/bin/python
Quarto 문서에서 점검
Quarto 문서에서 파이썬 경로가 가상환경으로 설정되어 있는지 점검한다.
1
2
import sys
sys.executable
출력 결과가 .../python4da/.venv/bin/python 와 같이 가상환경으로 설정되어 있다면 정상이다.
실제 코드가 정상 실행되는지 확인하다.
1
2
3
4
from palmerpenguins import load_penguins
df = load_penguins()
df.head()
GitHub Actions 자동 빌드 및 배포
아래는 workflow 파일이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
name: Render & Deploy Quarto Book
on:
push:
branches: [ main ]
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
# Python 버전 고정 (uv가 이 Python을 사용)
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
# uv 설치
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> $GITHUB_PATH
# 가상환경 생성 및 패키지 설치
- name: Create venv & install dependencies
run: |
uv venv
source .venv/bin/activate
uv pip install --upgrade pip
uv pip install -r requirements.txt
- name: Configure git identity
run: |
git config --global user.name "github-actions"
git config --global user.email "github-actions@github.com"
- name: Ensure gh-pages branch exists
run: |
if ! git ls-remote --exit-code --heads origin gh-pages; then
git checkout --orphan gh-pages
git rm -rf .
echo "Initializing gh-pages branch" > index.html
git add index.html
git commit -m "Initialize gh-pages"
git push origin gh-pages
git checkout main
fi
- name: Install Quarto
uses: quarto-dev/quarto-actions/setup@v2
# Quarto 렌더링 (uv venv Python 사용)
- name: Render book
run: |
source .venv/bin/activate
quarto render
- name: Publish to gh-pages
uses: quarto-dev/quarto-actions/publish@v2
with:
target: gh-pages
uv 설치와 requirements.txt을 이용한 패키지 설치를 추가한다. 여기까지 문제가 없다면 파이썬 코드 실행 결과가 정상적으로 출력된다.
E.O.F
