Python 개발 환경

상용 파이썬 재배포판

  • 일관된 환경 사용
  • 그 중에서도, Anaconda 자주 사용

Anaconda

  • Conda 라는 Package 관리자 존재
  • 수많은 수학 / 과학 Binary가 미리 Compile 되어 제공
  • Buildout 같은 역할
Buildout 이란?
레시피를 만들고 작성할 수 있는 Framework이다. 여기서 레시피란 임의의 코드를 포함하는 Python Module 이라고 생각하면 좋다.

예를 들어, Dictionary를 생성하고 Source code를 Checkout & build, 그리고 프로젝트에 Python이 아닌 파트를 추가하는 시스템 호출을 수행한다.

 

Checkout : 버전 관리 시스템 ( ex> git) 에서 사용하는 용어로, 특정 버전의 소스 코드를 가져오는 작업을 한다.

 

Build : Source code와 관련된 파일들을 compile & link 하여 실행 가능한 형태로 만드는 것

 

개발 환경

  • Python은 컴파일 방식이 아닌 인터프리터 방식이기에 Make, Java Ant, Maven, Gradle 같은 빌드 도구가 필요하지 않음
Compile 방식
소스 코드를 한 번에 번역하여 기계어로 변환한 뒤, 실행 가능한 파일 (.exe, .jar 등)을 생성한다.
이 방식은 컴파일 단계는 느리지만 실행 파일은 빠르며, 검증이 좋아서 성능이 좋고, 에러를 미리 발견할 수 있다.
실행 파일과 소스 코드는 독립적으로 운영된다. 하지만, 플랫폼에 의존성이 커서 이식성이 제한된다.

Interpreter 방식
소스 코드를 한 줄씩 읽고 실행하고, 별도의 실행 파일이 존재하지 않는다.
디버깅, 코드 작성이 빠르고 유연성이 좋다. 플랫폼에 영향을 받지 않는 독립적이고 이식성이 좋다.
그러나, 실행 속도가 느리고 성능이 좋지 않고 에러 발생이 쉽다는 단점이 있다.

 

 

1️⃣ 텍스트 편집기

❶ Vim (Vi)

  • window 제외한 운영 체제에 내장
  • 콘솔 애플리케이션 (GUI 없이 텍스트로만 운영되는 것인데 물론 GUI 옵션도 존재함) 가능
  • python script를 작성하고 싶으면 C 소스 코드로부터 빌드할 때 빌드 구성에 관한 플래그를 설정하여야 함
  • --enbale-pyhtoninterp 또는 --enable-python3interp를 사용
  • indent는 python 이외의 언어를 함께 사용할 때 파이썬 소스 파일의 들여쓰기 설정을 도와주는 가벼운 플러그인
  • 이유를 따지지 않고 그냥 좋다.

❷ VSCode

  • 코드 완성 좋음
  • .Net 등 윈도우 개발자에게 좋다.
  • UI Good

 

2️⃣ IDE (Integrated Development Environment)

❶ Python / Intellij IDEA

사용 이유

  • 거의 완벽한 코드 완성
  • 가상 환경 지원 Good
  • Web Framework 지원 Good (유료 버전)

 

❷ Visual Studio

  • 코드 완성 Good
  • Microsoft 기반 도구나 언어와 궁합 Good

그렇다면 왜 IDE를 사용해야 하는가?

Python Interpreter를 빠르게 바꿀 수 있다는 점이다!

 

 

3️⃣ 격리 도구

❶ 가상 환경

  • 서로 다른 프로젝트가 필요로 하는 의존성을 각자가 원하는 위치에 분리
  • 가상환경을 활성화하면 현재 가상환경의 위치가 PATH 맨 앞에 추가
  • 가상환경을 비활성화하면 PATH가 원래 상태로 돌아감

< 가상 환경 생성 & 활성화 >

1. --python 인자 사용

2. conda

 

가상 환경에 라이브러리 추가

  • 다른 사람에게 제공할 패키지나 프로젝트를 빌드하고 싶으면 가상 환경이 활성화된 상태에서 다음 명령어 사용
$ conda activate "가상환경 이름" # 가상환경 활성화
$ pip freeze > requirements.txt 
$ pip install -r requirements.txt # 설치
$ deactivate # 가상환경 비활성화

 

❷ 대표적인 격리도구

1. pyenv

  • 여러 버전의 파이썬 인터프리터를 동시에 사용할 수 있도록 관리하는 도구

2. Conda

  • pip + virtualenv + Buildout
  • shell script에 저장되며, YAML 형식 (인간과 기계 모두 읽을 수 있도록 설계된 마크업 언어)
  • conda 에서 없는 패키지를 설치하고 싶으면 pip 사용

3. Docker

  • 환경 격리를 도와주지만 가상 환경 대신 Docker Container 제공
  • 가상환경보다 높은 수준의 격리
  • 운영체제로의 액세스를 조정하는 별도의 유틸리티인 Docker Engine을 사용해 관리
  • Docker의 구성 파일은 Dockerfile 이라고 불리며, Docker Image를 빌드
  • Docker Image는 Docker Package 저장소인 Docker Hub에 Hosting 할 수 있음
  • 공간을 적게 차지하는데, Image의 "diff"만 제공하는 AUFS 결합 파일 시스템을 사용

Docker에 관련된 저의 포스팅이 있으니 참고 바랍니다.

https://devidas.tistory.com/52