Python/Dev Environment

[Python] Python 개발 환경 구성

데이터 세상 2021. 2. 22. 11:41
728x90
반응형

Python 설치

 

Python Releases for Windows

The official home of the Python Programming Language

www.python.org


Python 가상 환경

  • Python 개발 환경 기준 다양한 Python 버전과 패키지 관리가 필요한 경우 개발 환경 분리 필요
  • pyenv, virtualenv, pyenv-virtualenv, autoenv

 

pyenv

  • Simple Python version management, 파이썬 버전을 관리하는 툴
  • 하나의 컴퓨터에 다양한 파이썬 버전을 설치하고 관리.
  • Windows OS: github.com/pyenv-win/pyenv-win
 

pyenv-win/pyenv-win

pyenv for Windows. pyenv is a simple python version management tool. It lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of s...

github.com

 

pyenv-virtualenv

  • pyenv-virtualenv은 virtualenv의 pyenv 확장 플러그인
  • 파이썬 버전과 라이브러리의 완전한 격리 환경을 제공.

 

autoenv

  • pyenv-virtualenv 사용 시 불편한 수작업을 자동화
  • 특정 프로젝트 폴더로 들어가면 .env파일 실행하여 가상환경 활성화
  • 프로젝트 별 수동 명령어를 실행하여 개발환경 변경 필요하나 autoenv 적용 시 프로젝트 실행 시 자동 스크립트 실행하여 개발 환경 변경해줌

 

virtualenv

 

Virtualenv — virtualenv 20.4.3.dev2+g4740930 documentation

© Copyright 2007-2021, PyPA, PyPA. Revision 47409306. Last updated on 2021-02-20T10:06:56.236965.

virtualenv.pypa.io

# (optional) pip upgrade
python -m pip install --upgrade pip
 
# install virtualenv package
pip install virtualenv
 
# 가상환경 생성
# venv는 가상 환경 이름으로 원하는 명으로 변경 가능
virtualenv venv
 
# 가상환경 실행
Windows OS: call venv/Scripts/activate
Linux: source venv/bin/activate

 

Anaconda

  • 패키지 관리와 디플로이를 단순케 할 목적으로 과학 계산을 위해 파이썬과 R 프로그래밍 언어의 자유-오픈 소스 배포판
  • 여러가지 수학 및 과학 패키지들을 기본적으로 포함하고 있는 파이썬 배포판으로 머신러닝/딥러닝의 개발 환경을 쉽게 구축
  • www.anaconda.com/products/individual
 

Anaconda | Individual Edition

Anaconda's open-source Individual Edition is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

설치 프로그램 >  Anaconda Powershell Prompt (Anaconda3) 실행
 
# 가상환경 생성
conda create -n venv python=3.8.3
 
# 가상환경 목록 확인
conda env list
 
# 가상환경 활성화
activate venv
 
# 가상환경 비활성화
deactivate venv
 
# 가상환경 삭제
conda env remove -n venv

Visual Studio Code 환경 설정

Extension 설치

Python

  • Python extension for VS Code
  • InteliSense, liniting, Debugging, Search, Jupyter Notebook 지원 등의 기능 지원

(Deprecated) Python for VSCode 

  • A Python language pack for Visual Studio Code
  • Python 언어팩, 구문 강조 스니펫 등 기능 지원

(Optional) Python Extension Pack

  • Popular Visual Studio Code extensions for Python
  • 멀티쓰레드 디버깅 지원 IntelliCode 지원 기능

(Optional) Pylance

  • A performant, feature-rich language server for Python in VS Code
  • Python 코드 자동 완성 편의를 위해 제공되는 서버

 

Python Interpreter 설정

F1 또는 Ctrl + Shift + P 입력(Palette 명령)
Python Interpreter를 입력하여 "Python: Select Interpreter" 클릭
원하는 Python Interpreter를 사용
** 가상 환경 설정한 경우 가상 환경 경로의 Python Interpreter 선택

또는
VS Code 좌측 하단 Python Extension 선택

 

Python Coding Convention

PEP(Python Enhance Proposal) 8

  • Style Guide for Python Code
indent는 4 spaces를 사용한다.
함수와 함수 사이에 blank line을 2개 둬야 한다.
line length의 최대치는 79다. (이것은 대략적인 A4 용지 사이즈이다.)
각각의 import들은 comma로 연결하지 말고, 별도의 라인으로 나눈다.
모듈과 패키지 이름은 짧고 lower_case_with_underscore 이다.
다른 모듈에서 import 할 때 보일 필요가 없는 함수, 변수는 변수명 앞에 _를 추가한다.
상수는 A_CONSTANT
함수는 naming_convention
클래스는 NamingConvention

 

Coding Convention 환경 구축

Black (or autopep8, yapf)

  • Code Formatter
  • CPython의 개발을 주도하고 있는 파이썬 공식 organization인 Python에서 개발한 formatter
pip install black
settings.json

{
    // python 경로는 작업중인 가상환경의 경로
    "python.pythonPath": "c:\\venv\\Scripts\\python.exe",
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": [
        "--line-length",
        "150"
    ],
    // 코드 저장할 때마다 자동 실행
    "editor.formatOnSave": true,
}

black 적용 제외 구간 지정

# fmt: off
{
 code
}
# fmt: on

 

Pylint

  • Code Style Checker
  • style checking, error checking, 리팩토링과 관련된 조언과 함께 코드에 점수도 매겨 준다
  • docs.pylint.org/en/1.6.0/index.html
 

Pylint User Manual — Pylint 1.6.5 documentation

 

docs.pylint.org

pip install pylint
settings.json

{
    // 경로는 작업중인 가상환경의 경로
    "python.linting.pylintPath": "C:\\venv\\Scripts\\pylint.exe",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    // Whether to lint Python files when saved.
    "python.linting.lintOnSave": true,
     
    //rc 파일 생성한 경우
    "python.linting.pylintArgs": [
        "--rcfile",
        ".pylintrc"
    ],
}

 

Pylint 실행

pylint [파일명] > [report 파일명]

 

Pylint import error 수정

  • 정상적인 경로의 패키지를 import 하더라도 pylint에서 import 에러 발생으로 표시되는 경우

create .pylintrc file

// rcfile 생성 시 encoding option이 없을 경우 pylint 명령어 정상 실행되지 않을 수 있음
pylint --generate-rcfile | out-file -encoding utf8 .pylintrc

pylint --generate-rcfile -encoding utf8 > .pylintrc

.pylintrc init-hook 경로 변경

# 다음을 추가 (소스 파일 경로는 실제 작업중인 폴더 경로로 변경)
init-hook='import sys; sys.path.append("C:/Tests/src");'

 

Warning 예외 처리

  • Warning 제외 원할 경우 disable에 항목 추가 예시
disable =
    line-too-long, 
    too-many-lines,
    missing-module-docstring,
    missing-function-docstring,
    too-few-public-method,
    wrong-import-order,
    wrong-import-position,
    broad-except,
    anomalous-backslash-in-string,

 

max_statements

max-statements=90

 

Message Format

# the default format:
# {path}:{line}:{column}: {msg_id}: {msg} ({symbol})
 
# Visual Studio compatible format (former 'msvs' output format):
# {path}({line}): [{msg_id}{obj}] {msg}
 
# Parseable (Emacs and all, former 'parseable' output format) format:
# {path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
 
msg-template={path}({line}): [{msg_id}{obj}] {msg} ({symbol})

 

Unit Test

  • VSCode에서 작성된 테스트 코드를 실행/관리하기 위한 옵션을 추가할 수 있음
  • ctrl+shitf+P 를 누른 후 Python Debug All Test 선택 하면 테스트가 됨, 아니면 화면 하단 Run Tests 를 누른다
settings.json

// vscode testing 옵션
"python.testing.pytestPath": "C:\\venv\\Scripts\\pytest.exe",   
"python.testing.pytestArgs": [
    "src/tests"
],
"python.testing.pytestEnabled": true,
"python.testing.unittestEnabled": false,
"python.testing.nosetestsEnabled": false

 

728x90
반응형

'Python > Dev Environment' 카테고리의 다른 글

[Python] Jupyter Notebook  (0) 2021.03.09
[Machine Learning] Google Colaboratory  (0) 2021.02.23