[SMTM 개발일기] 3. 개발환경 및 프로젝트 구조 만들기 2020. 2. 24. 23:57

Python Algorithm Trading System 개발일기

파이썬은 조각 조각 찔끔 찔끔 개발해 봤을 뿐이지 하나의 프로젝트를 구성해 본 적이 없었는데, 이번에 좀 알게되었다. 대단한건 아니고, 그냥 적당히 하면 될 것 같다.ㅋ

프로젝트 구조

구조를 어떻게 가져가야 할지. 일반적인 구조는 어떻게 되는지 찾아보고 따라 가기로 했다. 늘 그랬듯이...ㅋ

ROOT
├── setup.py
└── simulator
    ├── __init__.py
    ├── module.py
└── tests
    ├── __init__.py
    └── test_module.py

이래 저래 말이 많은것 같은데, 그냥 적당히 위와 같은 구조로 고고!

어떻게 설치하지?

일단, 프로젝트 구조는 정해졌고, 프로젝트에서 산출물이 나오면 실행하는 부분은 각자 알아서 하는 것으로ㅋㅋㅋ 실행환경은 개취에 맡기는 것이 맞는 것 같다.

알아서 하라고 하면 너무 불친절 할 수 있으니, 추천 방법에 대해서 설명을 하나 넣어야겠다. 추천이라는 말도 조금 부담스럽기는 한데, 나는 그냥 jupyter notebook을 이용해서 실행 할까 한다. 쥬피터 설치하는 방법은 링크로 대신해야겠다.

테스트는 어떻게?

테스트 방법도 여러 가지가 있는 것 같은데, 테스트는 tests 폴더에서 python -m unittest 실행하는 것으로 끝!

근데, 막상 사용해보니 이쁘지도 않고 편리하지도 않다. pycharm이나 PTVS을 추천하던데, 둘 다 내가 지향하는 가벼운 느낌은 아니라서 혹시나 해서 VS Code 쪽을 살펴봤는데, 충분히 좋은 Extension이 제공되고 있었다!

Python extension for Visual Studio Code 당연히? 무료! 오픈소스! 프로젝트이다.

Python testing in Visual Studio Code 가이드를 보고 smtm 코드를 실행해 보면 아래와 같이 실행되는 것을 확인 할 수 있다.

 

venv에 대한 설정도 쉽게 가능하다. Using Python environments in VS Code 그 뿐만 아니라 jupyter notebook과 연결도 된다고 하니, 그건 나중에 해보자.

아, Unit Test에 대해서는 뭐 일반적인 내용이니까 따로 설명할 필요 없을것 같다. 방금 언급한 개발환경에서 다른 언어, 플랫폼의 개발환경만큼이나 일반적이고 편리하게 테스트 환경을 제공하고 있다. Unit Test는 이제 기본으로 깔고 가는 느낌.ㅎ

CI 적용하기

T.Viewer 와 마찬가지로 이번에도 Travis를 사용하려 한다. .travis.yaml은 아래와 같이 작성해서, 고고.

unittest cli command에 대해서는 reference site를 참조 unittest — Unit testing framework

notifications:
  email:
    on_success: never
    on_failure: change

branches:
  only:
    - master
    - /releases\/.+/

language: python
python:
  - "3.5"

# command to install dependencies
install: "pip install -r requirements.txt"

# command to run tests
script: python -m unittest discover ./tests *test.py -v

README.md

최종 README.md 는 아래와 같다.

https://github.com/msaltnet/smtm에서 확인가능.

마치며

이제 본격적으로 프로그래밍할 일만 남았다. 기대된다잉~ 기본 테스트 커밋 올려둔다.

참고

파이썬 프로젝트의 구조

Packaging Python Projects

Python testing in Visual Studio Code