Python

[Python] 가상환경 - venv

웹개발자(진) 2024. 4. 3. 22:41
반응형
잡담

힘들다.


가상환경(Virtual Environment)

가상환경(Virtual Environment)은 프로젝트별로 독립적인 파이썬 환경을 생성하는 도구입니다. 일반적으로 하나의 시스템에는 여러 프로젝트가 있고, 각각의 프로젝트는 서로 다른 라이브러리 의존성을 가지고 있을 수 있습니다. 가상환경을 사용하면 이러한 의존성 충돌을 방지하고 프로젝트 간에 독립성을 유지할 수 있습니다.

가상환경을 생성하면 해당 환경에 필요한 파이썬 실행 파일과 라이브러리들이 포함된 디렉터리가 생성됩니다. 그리고 해당 가상환경을 활성화하면 시스템 전역에 설치된 파이썬 패키지와 격리되어 독립적으로 사용할 수 있습니다.

가상환경을 생성하고 관리하기 위한 주요 도구로는 venv, virtualenv, conda 등이 있습니다. 각 도구마다 조금씩 다른 사용법과 특징을 가지고 있지만, 모두 파이썬 가상환경을 관리하는 데 사용됩니다.


 

venv 모듈

venv 모듈은 Python 3부터 기본적으로 제공되는 가상환경을 생성하는 모듈입니다. 이 모듈을 사용하면 프로젝트별로 독립적인 파이썬 환경을 만들고 관리할 수 있습니다.


1. 가상환경 생성

venv 모듈을 사용하여 새로운 가상환경을 생성합니다. 이때 명령어는 다음과 같습니다:

python -m venv <가상환경이름>

 

 


 

2. 가상환경 활성화

생성된 가상환경을 활성화하여 사용합니다. 가상환경을 활성화하면 해당 가상환경의 파이썬 실행 파일과 라이브러리가 우선적으로 사용됩니다. 활성화 명령어는 운영 체계에 따라 다릅니다:

Windows:

<가상환경이름>\Scripts\activate

macOS 및 Linux:

source <가상환경이름>/bin/activate

가상환경이 활성화되면 프롬프트 앞에 가상환경 이름이 표시됩니다.

<(가상환경이름)> $

 


 

3. 가상환경 사용

가상환경이 활성화되면, pip를 사용하여 해당 가상환경에 필요한 라이브러리를 설치하거나 Python 스크립트를 실행할 수 있습니다.

가상환경이 활성화된 상태에서 필요한 패키지를 설치합니다.

pip install pandas

가상환경 내에서만 패키지가 설치되며 다른 환경에 영향을 주지 않습니다.

 


 

4. 가상환경 비활성화

작업을 마치고 가상환경을 더 이상 사용하지 않을 때, 가상환경을 비활성화할 수 있습니다. 이는 단순히 다음 명령어를 실행하면 됩니다:

deactivate

venv 모듈은 Python을 설치할 때 함께 제공되므로 별도의 설치가 필요하지 않습니다. 이 모듈을 사용하여 간단하고 효율적으로 가상환경을 관리할 수 있습니다.


패키지 분리 확인

‘myenv’와 ‘myenv2’라는 가상환경을 생성하고 각각에 ‘pandas’ 패키지를 설치한 후 패키지 목록을 확인합니다.

‘myenv’ 가상환경

# 가상환경 생성
python -m venv myenv

# 가상환경 활성화
source myenv/bin/activate

# 패키지 설치
pip install pandas

# 패키지 목록 확인
pip list

# import 패키지
python

>>> import pandas
>>>
# 정상적으로 패키지가 설치되어 import할 수 있습니다.

디렉토리 경로 확인: \myenv\Lib\site-packages 디렉토리에 ‘pandas’ 패키지가 설치되어 있습니다.

‘myenv2’ 가상환경

# 가상환경 생성
python -m venv myenv2

# 가상환경 활성화
source myenv2/bin/activate

# 패키지 목록 확인
pip list

# import 패키지
python

>>> import pandas
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pandas'
# 패키지가 설치되지 않아 import할 수 없습니다.

디렉터리 경로 확인: \myenv2\Lib\site-packages 디렉토리에 ‘pandas’ 패키지가 없습니다.


 

requirements.txt

requirements.txt 파일은 프로젝트에 필요한 파이썬 패키지들과 해당 버전을 명시하는 텍스트 파일입니다. 이 파일은 주로 가상환경을 설정하고 패키지를 설치하는 데 사용됩니다.

보통 requirements.txt 파일은 다음과 같은 형식으로 작성됩니다:

package1==1.0.0
package2>=2.3.0,<3.0.0
package3

각 줄은 하나의 패키지를 나타내며, 다음과 같은 형식을 따릅니다:

  • package_name: 패키지의 이름을 나타냅니다.
  • ==, >=, <: 패키지의 버전을 나타내는 연산자를 사용하여 해당 패키지의 버전을 지정합니다. 이 연산자들은 다음과 같은 의미를 가집니다:
    • ==: 정확히 해당 버전을 사용합니다.
    • >=: 해당 버전 이상을 사용합니다.
    • <: 해당 버전 미만을 사용합니다.
  • version: 패키지의 버전을 나타냅니다.

예를 들어, 위의 예시에서는 package1 패키지의 버전이 정확히 1.0.0이어야 하며, package2 패키지는 2.3.0 이상이지만 3.0.0 미만의 버전을 사용해야 합니다. package3 패키지에는 버전이 명시되어 있지 않으므로 최신 버전이 설치됩니다.

requirements.txt 파일을 사용하면 다른 환경에서 동일한 패키지 버전을 설치할 수 있으며, 이는 프로젝트의 의존성을 관리하고 프로젝트를 공유하거나 재현할 때 유용합니다. 보통 pip 명령어를 사용하여 requirements.txt 파일에 명시된 패키지들을 설치합니다. 예를 들어:

pip install -r requirements.txt

위 명령어를 실행하면 requirements.txt 파일에 명시된 패키지들이 자동으로 설치됩니다.

생성하기

터미널에서 아래 명령을 실행하여 현재 활성화된 가상환경의 패키지 목록을 requirements.txt 파일로 저장합니다.

pip freeze > requirements.txt

 


 
글을 마치며

오늘은 가상환경에 대해서 알아보고 그 예로 venv 모듈을 설치해 보고 가상환경이 적용되는지 pandas 패키지를 설치해서 알아봤습니다. 프로젝트를 할때 서로 다른 버전의 패키지가 필요할 때 이런 식으로 분리해서 사용할 수 있다는 걸 배워 봤습니다. 다음엔 python에서 JSON을 다뤄보도록 하겠습니다. 감사합니다.

반응형

'Python' 카테고리의 다른 글

[Python] YAML  (1) 2024.03.23
[Python] Logging(로깅)  (0) 2024.03.23