본문 바로가기

Python

Python 입문기

 

최근에 AI 모델을 직접 만지는 프로젝트에 참여할 기회가 있었다. 프로젝트는 Python을 이용는데, Java에 익숙한 나에겐 신선한 경험이었다. 위 프로젝트를 진행하면서 알게된 Python의 기본 지식을 나중을 위해 정리해 두려고 한다. 다른 언어들은 사용해 봤지만, Python은 처음 사용하신다면 한 번쯤 읽어보길 추천한다.

 

글에서는 Python 관련 2가지 개념을 설명한다.

첫 번째는 Python 코드가 실제 동작하기까지의 과정이다. (개인적으로 실제 코드가 동작하는 과정을 알아야 개발하다 이슈를 만나도 쉽게 해결할 수 있는 것 같다.)

두 번째는 Virtual Environment에 대해 설명하겠다.

 

Python Code 실행 과정

 

Code Editior에 Python 코드를 작성하면 Python 코드는 어떤 Process를 통해 실행 가능한 파일로 바뀌고 실행될까?

 

Python은 Interpreter 언어이다. 따라서 Java와 달리 Compile 단계가 사전에 필수 조건이 아니다.

Python Source Code(.py)를 실행하면 Python Intrepreter가 다음의 일을 수행한다.

 

 

1. Lexical Analysis

interpreter가 코드를 분석 후, 코드를 토큰으로 쪼갠다.

 

2. Parsing

1번의 토큰들을 이용해 parse tree를 생성한다.

 

3. Execution

parse tree에 따라 명령어들을 실행한다.

 

 

ref

- https://dev.to/vayolapradeep/how-python-programs-works-15f#:~:text=A%20Python%20program%20starts%20as,analysis%2C%20parsing%2C%20and%20execution.

 

Python Virtual Environment

Virtual Enviornment는 말 그대로 가상환경이다. Virtual Environment를 이용하면 하나의 Python Project가 다른 Python Project에 영향을 주지 않아 하나의 PC에서 여러 Python Project를 개발 및 실행할 때 편의성을 높여준다.

 

Virtual Environment는 2가지 Component로 구성돼 있다.

 

 Python Interpreter

Virtual Environment에서 Python 코드를 실행할 Interpreter이다.

 

설치된 Third-Party libraries

Virtual Environment에서 사용하는 Python Libraries들의 모음이다. 

 

우리가 실제 Python Code를 Container 환경에 배포할 때도 Virtual Environment를 사용하는게 좋을까?

답은 아니다. 보통의 경우 하나의 Container에는 하나의 App이 실행되기 때문에 Virtual Environment를 설치할 필요가 없다.

 

 

ref

- https://www.dataquest.io/blog/a-complete-guide-to-python-virtual-environments/

 

A Complete Guide to Python Virtual Environments (2022) – Dataquest

As you get started in Python, you may be wondering: What are Python virtual environments? Why should I use them? How do I use them? With examples, this tutorial answers these questions and more!

www.dataquest.io

https://stackoverflow.com/questions/48561981/activate-python-virtualenv-in-dockerfile

 

 

마치며

Python을 자주 사용하시는 분이라면 당연히 알고 있을 기본적인 개념을 설명했다. 기본인 만큼 Python이 처음이라면 위 2가지 개념 만큼은 알고 개발하는게 좋지 않을까 생각한다.