목차 - 클릭하면 이동합니다.
시작하기 전에
이번 시간에는 앞으로 진행해 나가게 될 파이썬 프로젝트의 폴더 구조에 대해서 살펴 보려고 합니다.
사실 파이썬 프로젝트 구조를 만드는데 정답이 있는 것은 아니지만, 향후 프로젝트를 조금 더 체계적으로 잘 관리하기 위해서는 자신만의 프로젝트 구조를 만들어 놓는 것은 의미 있는 일이라 할 수 있습니다.
만약 이미 파이썬에 익숙하거나 자신만의 프로젝트 구조를 가지고 계신 분은 이번 포스팅은 참고만 하셔도 괜찮을 것 같습니다.
프로젝트 폴더 만들기
베이스 폴더 만들기
베이스 폴더 이름은 technfin-bot으로 만들고 해당 폴더에는 라이센스 관련 파일 등 정보파일 그리고 각종 패키지를 설치할 수 있는 requirements.txt 파일을 보관할 예정입니다.
[python@instance-technfin ~]$ mkdir technfin-bot
[python@instance-technfin ~]$ cd technfin-bot/
[python@instance-technfin technfin-bot]$ pwd
/home/python/technfin-bot
[python@instance-technfin technfin-bot]$
위와 같이 먼저 mkdir 명령어를 이용해 폴더를 생성하겠습니다.
[python@instance-technfin technfin-bot]$ ls -rlt
total 12
-rw-rw-r--. 1 python python 1084 May 24 14:49 LICENSE
-rw-rw-r--. 1 python python 216 May 24 14:49 README.md
-rw-rw-r--. 1 python python 628 May 24 14:49 requirements.txt
[python@instance-technfin technfin-bot]$
폴더에는 우선 3가지 파일을 만들 예정인데 사실 꼭 필수로 있어야 하는 파일은 아닙니다. 하지만 이번 시즌에는 조금 더 구조적으로 체계적인 프로젝트를 진행해 볼 예정이고 향후 해당 소스를 Git-Hub와 같은 소스 레포지토리에도 업로드할 예정이라 라이센스 라던지 설명(README.md)파일과 패키지 설치용 파일등을 만들어 보겠습니다.
MIT License
Copyright (c) 2023 Tech&Fin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
먼저 라이센스 파일은 MIT 라이센스로 자유롭게 사용할 수 있도록 할 예정이며 LICENSE라는 파일을 하나 만들어서 위의 내용과 같이 대략적인 내용을 작성해 두면 됩니다.
[python@instance-technfin technfin-bot]$ cat README.md
# Cobot - Coin Bot
[![license](https://img.shields.io/badge/license-MIT-blue)](/LICENSE)
> Coin Bot made by Tech&Fin Korea
파이썬 기반 암호화폐 자동매매 프로그램. https://technfin.tistory.com
README.md 파일은 위와 비슷하게 작성하면 됩니다. md 확장자는 Mark Down 문법을 사용하는 문서로 Git-Hub에 해당 파일을 올리면 보기좋은 모양으로 상세 설명을 보여줄 수 있습니다. 마크다운 문법은 인터넷에 검색해보면 자세히 설명되어 있으니 참고 부탁 드립니다.
[python@instance-technfin technfin-bot]$ cat requirements.txt
APScheduler==3.6.3
asyncio==3.4.3
cachetools==4.2.2
certifi==2021.10.8
charset-normalizer==2.0.10
colorlog==6.7.0
configparser==5.2.0
gevent==22.10.2
greenlet==2.0.2
idna==3.3
numpy==1.22.0
pandas==1.3.5
Pillow==9.1.0
podman-compose==1.0.6
psycopg2-binary==2.9.3
PyJWT==2.3.0
python-dateutil==2.8.2
python-dotenv==1.0.0
python-telegram-bot==13.10
pytz==2021.3
pytz-deprecation-shim==0.1.0.post0
PyYAML==6.0.1
requests==2.27.1
six==1.16.0
torch==1.10.1
torchaudio==0.10.1
torchvision==0.11.2
tornado==6.1
typing_extensions==4.2.0
tzdata==2021.5
tzlocal==4.1
urllib3==1.26.8
websockets==10.1
zope.event==4.6
zope.interface==5.5.2
[python@instance-technfin technfin-bot]$
requirements.txt 파일은 일단 위와 같이 작성하겠습니다. 실제로는 현재 작동되는 프로젝트에서 freeze 명령어를 통해 requirements.txt 파일을 만드는건데 현재는 새로운 프로젝트를 만드는 과정이니 제가 사용했던 requirements.txt 파일을 이용해 보도록 하겠습니다.
나머지 폴더 구조 만들기
[python@instance-technfin technfin-bot]$ tree -L 4 -I "__pycache__|__init__.py"
.
├── cobot
│ ├── bithumb_ws_ticker.py
│ ├── env
│ │ └── config.yaml
│ └── resources
│ └── bithumb
│ ├── client.py
│ ├── constants.py
│ ├── database.py
│ └── exceptions.py
├── LICENSE
├── README.md
└── requirements.txt
4 directories, 9 files
[python@instance-technfin technfin-bot]$
조금전에 만든 베이스 폴더 아래에 cobot이라는 폴더를 만들고 해당 폴더에 bithumb_ws_ticker.py라는 파이썬 파일을 만들어서 빗썸 웹소켓에 접속하여 시세를 수신하는 프로그램을 만들어 보겠습니다.
env 폴더에는 config.yaml 이라는 야믈 파일을 이용해서 각종 API Key와 같은 환경 설정에 필요한 정보들을 안전하게 보관할 예정입니다.
다음으로는 resources 폴더 아래에 각 거래소별 폴더를 만들겠습니다. 우선 bithumb을 만들고 향후 upbit 및 binance와 같은 폴더를 추가해 나가도록 하겠습니다.
각 거래소 별 폴더 아래에는 client.py 파일을 이용해 거래소 API를 활용하는 파이썬 프로그램을 작성하고 constants.py에서 상수 관리를 하려고 합니다.
이어서 database.py 파일에는 각종 데이터베이스에 접속해서 사용하는 모듈을 만들 예정이고 exceptions.py 파일을 통해 에러 처리를 컨트롤할 예정입니다.
마치며
전반적으로 앞서 말씀 드렸던 폴더 구조를 만들고 각각의 껍데기 파일을 만들어 주시면 될 것 같습니다. 다음 포스팅에서는 파일 하나하나씩 내용을 채워가며 본격적인 개발을 진행해 보도록 하겠습니다.
아래 링크를 통해 Tech&Fin Korea의 공식 텔레그램 채널에 입장하시면 향후 도움을 받으실 수 있으니 참고 부탁 드립니다.
감사합니다.
'프로젝트 > 비트코인 자동매매' 카테고리의 다른 글
[비트코인 자동매매 시즌2] #1 - 개발 환경 설명 및 설정 (0) | 2024.05.10 |
---|---|
비트코인 자동매매 프로그램 만들기 시즌2 안내 (1) | 2024.04.30 |
급등주 찾기 쿼리 - PostgreSQL 버전 (4) | 2022.05.03 |
비트코인 자동매매 프로그램 자주 발생하는 오류 및 대처 방법 (30) | 2022.03.12 |
업비트 웹소켓 데이터 PostgreSQL DB에 저장하기 - 파이썬 비트코인 자동매매 (12) | 2022.02.23 |
업비트 공지사항 크롤링하여 텔레그램으로 메세지 알림받기 (21) | 2022.01.29 |