Python3 프로젝트 초기화하기

Today lolol·2022년 1월 28일
0
post-thumbnail

⚠️ 읽기 전에

내가 보려고 적은 것이기 때문에 친절하지 않다는 것을 감안해주길 바란다.

사용한 도구들

  • pycharm
  • pipenv
    • python3.9
    • black (formatter)

pycharm

vscode도 python을 사용할 때 쓸 수 있는 좋은 선택지 중 하나이다. 하지만 뭔가 더 전문가스럽고, 기본 세팅이 잘되어 있는 IDE를 찾는다면 pycharm은 좋은 선택지이다.

vscode와 달리, pycharm은 유료/무료 버전이 나뉘어 있지만 무료버전도 쓸만하다.

pipenv

의존성을 기기(PC) 내 전역으로 관리하지 않는다면, venv라는 가상환경을 만들어 사용해봤을 것이다.
이는 매번, source ./venv/bin/activate하는 것이 번거롭게 느껴졌다면 pipenv 혹은 poetry는 좋은 선택지가 될 것이다. - 이 글에서는 poetry에 대해 다루지 않는다 - 그 중 나는 pipenv를 사용하고 있다.

pipenv에서는 가상환경을 시작할 때, pipenv shell이라는 명령어를 이용해서 가상환경을 호출한다. 만약 python 버전을 정한 가상환경을 만들고 싶다면, pipenv --python <version>을 통해 버전을 명시할 수 있다.

또한 별도의 requirements.txt를 만들지 않아도 알아서 버전 리스트를 작성해 관리하는데, Pipfile이라는 파일이 생긴다. 아래는 내가 생성한 가상환경의 Pipfile이다:

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
django = "*"

[dev-packages]
black = "*"

[requires]
python_version = "3.9"

만약에 requirements.txt라는 파일이 필요하다면, pipenv lock -r > requirements.txt라고 입력해보자. requirements.txt가 아래처럼 생길 것이다:

#
# These requirements were autogenerated by pipenv
# To regenerate from the project's Pipfile, run:
#
#    pipenv lock --requirements
#

-i https://pypi.org/simple
asgiref==3.5.0; python_version >= '3.7'
django==4.0.1
sqlparse==0.4.2; python_version >= '3.5'

Pipfilerequirements.txt의 내용을 보면 의존성이 다르게 표시된다는 것을 알 수 있다. black에 대한 의존성이 표시되지 않았다.
black의 개발 의존성으로 release되는 제품에 필요하지 않은 의존성이기 때문에 제외되었다.

black setup

prettier같은 formatter가 python 진영에 있다면 얼마나 좋을까?
prettier와 완전히 같다고 할 수는 없지만, black을 사용하면, 많은 도움이 될 것 이다.

별도의 설정파일로 관리하고 싶다면, pyproject.toml이라는 파일을 만들어서 사용할 수 있다.

[tool.black]
line-length = 88
target-version = ['py37']
include = '\.pyi?$'
extend-exclude = '''
# A regex preceded with ^/ will apply only to files and directories
# in the root of the project.
^/foo.py  # exclude a file named foo.py in the root of the project (in addition to the defaults)
'''

대안들

dependency manager

poetrypipenv보다 더 넓은 기능을 지원하는 것 같다. 나중에 써보려고 하는데, 아직은 pipenv의 불편한 점을 느끼지 못했다.

formatter

vscode에서 python project 만들면 매번 물어보는 yapf쓸거니? black 쓸거니?

logging

혹시 아직도 print()로 로깅을 한다면, 아직 Logger에 대해 생소할지도 모르겠다.
여기서 소개하는 내용은 logger에 대한 내용이다.

loguru는 로깅을 쉽게해주는 라이브러리다.
loguru는 저장소 설명에도 써있듯이 사용하기 정말 너무나 쉽다.

Python logging made (stupidly) simple

결론

Python3 프로젝트에서 사용하기 좋은 라이브러리들에 대해 다뤄봤다.
도움이 되었으면 좋겠다. 그럼 20000


Ref

profile
working making doing makes us 🤖

1개의 댓글

comment-user-thumbnail
2022년 2월 9일

내가 쓰고 내가 제일 많이 보는 것 같다.

답글 달기