zipline-reloaded 빌드환경

zipline 은 Quantopian 이 운영하던 오픈소스 백테스팅 으로 2021년경 지원이 중단된 뒤로 Machine Learning for Trading 책의 저자가 fork 한 zipline-reloaded 프로젝트로 유지되고 있다.

오픈소스 개발에 참여하기 위해서 링크의 개발환경이 갖춰져야 한다.

개발환경 구성하기

https://zipline.ml4trading.io/development-guidelines.html

  1. python 3.12
  2. venv, pyenv, conda 등 가상환경 가능.

Linux 의존성 설치

컴파일을 위해서 리눅스 패키지 의존성을 설치한다.

1
sudo apt install libatlas-base-dev gfortran pkg-config libfreetype6-dev hdf5-tools

ta-lib 의존성

zipline 에는 ta-lib 를 사용하는데 C 기반의 컴파일이 필요하다.

  • linux / macos

ta-lib C library 설치가 된후에 파이썬 모듈을 설치한다.

1
sudo apt install ta-lib

numpy, sphinx, Cython 설치

1
pip install -U numpy Cython 

필요 모듈 설치하기

setuptools/build 설치

1
pip install -U setuptools wheel twine build

빌드

1
python -m build

dist 폴더에 .wheel 결과가 생성된다. 이 whl 을 설치한다

~/zipline-reloaded$ pip install dist/zipline_reloaded-3.0.3-cp311-cp311-linux_x86_64.whl

doc 빌드

sphinx 관련

1
pip install -U sphinx m2r2 sphinx_markdown_tables

cd docs

Python - 문서화 도구 Sphinx

Sphinx 는 python의 대표적인 문서화 도구로 reStructedText 또는 Markdown 문서를 HTML, pdf, man page 등의 결과물로 생성할 수 있다.

sphinx 설치

sphinx 는 python 환경에서 실행이 된다. 설치는 python 환경 혹은 OS 환경에 직접 설치하는 방법이 있다. 파이썬 가상환경을 권장한다.

https://www.sphinx-doc.org/en/master/usage/installation.html

- Python 환경에 설치

python 환경 혹은 python 가상환경 (venv, virtualenv 등)에 설치

pip

1
pip install sphinx

Anaconda

1
conda install sphinx

- 시스템에 직접 설치

각 OS 의 SW 로 설치한다면 package 관리자를 사용해 설치한다.

Debian/Ubuntu

1
apt install python3-sphinx

RHEL, CentOS

1
yum install python-sphinx

macOS / home-brew

1
brew install sphinx-doc

Jekyll Install

이 글은 github pages 를 통해서 블로그를 할 수 있도록 다음 작업을 한다:

  • 로컬에 ruby를 기반으로한 jekyll 을 설치한다.
  • markdown 으로 작성한 문서를 github pages 에 올린다.

jekyll

jekyllrb.com 의 가이드에 따라 github page에서 블로그로 사용하고자 한다.

자세히 보기

Python - Build python source

2015년 쯤 작성한 것으로 Raspberry Pi, Orange Pi, Odroid SBC 보드에서 3.4를 빌드했다. 2017년 현재 배포본, Debian Jessie, Ubuntu Xeniel 등은 3.4, 3.5가 내장되어 배포되고 있다.
Python 3.6 이상 최신 소스를 빌드하는데 참고할 수 있다.

Build Python 3.4

Raspbian Wheezy에는 3.2가 설치되어 있다. Jessie 가 출시된 이후에 3.2에 대한 모듈 의존성 관리가 되지 않고 있어서 3.4 이상이 설치가 필요하다.

SSL/TLS 지원을 하기 위해 libssl, openssl 라이브러리를 설치한다.

1
2
$ sudo apt update
$ sudo apt install libssl-dev openssl

Python3.4를 다운로드하고 컴파일하고 설치한다.
Raspbian Weezy 에는 Python3.2가 있어서, 최신 3.4를 설치하려면 다운로드해서 컴파일 하면 된다.

1
2
3
4
$ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
$ tar xvzf Python-3.4.3.tgz
$ cd Python-3.4.3/
$ ./configure

Raspberry Pi 2에서 빌드시 꽤 많은 시간을 사용한다.

1
2
3
4
5
$ ./configure
...
real 2m16.512s
user 1m16.360s
sys 0m20.630s

컴파일하고 빌드시 한 시간 이상 필요하다.

1
2
3
4
5
6
$ make                  # 한 시간 소요
$ sudo make install
...
real 16m40.747s
user 15m51.550s
sys 0m24.030s

크로스컴파일 환경을 사용할 수 있다.