2020-10-09 12:40:21

파이썬 프로젝트를 진행하다보면 가상환경을 이용하는 것은 필수입니다. 왜냐하면, 어떤 프로젝트에서는 python3.1, tensorflow1.9 버전이 잘 맞고, 어떤 프로젝트에서는 python3.7, tensorflow2.1 버전이 잘 맞고 하는 등 상황에 따라 많이 다르기 때문입니다. 그래서 프로젝트에 따라 가상환경을 달리 설정해서 진행하는 것이 좋습니다. global 환경에서 여러 프로젝트를 진행하다가는 큰 낭패를 볼 수 있습니다. 

 

오늘은 파이참(pycharm) 통합개발환경(IDE)에서 venv로 가상환경을 만드는 법에 대해 다루도록 하겠습니다. 참고로 저는 윈도우 10 컴퓨터에 맞춰 설명을 진행할 것입니다. 

 

1. 가상환경 생성

새 가상환경을 생성하기 위해서는 파이참IDE 하단에 있는 Terminal에 들어가서 다음과 같이 명령해줍니다. 

 

> python -m venv 가상환경이름

 

저는 example_env라는 이름으로 가상환경을 만들어보겠습니다. 

 

이렇게 명령하면, example_env라는 이름의 하위 디렉토리가 생성됩니다. 가상환경이 생성되었다는 뜻입니다. 

 

 

참고로 test_env라는 가상환경은 예전에 만들었던 가상환경입니다.

 

global 환경에서 설치했던 패키지들은 좌측에 있는 External Libraries -> <Python 3.7> -> site-packages 에서 확인하실 수 있습니다. 물론 pip list로 terminal에 명령을 내릴 수도 있고요. 

 

 

그러면 새롭게 만든 가상환경에는 어떤 패키지들이 설치되어 있을까요? 그것을 확인하시려면 example_env 디렉토리에 들어가서 Lib -> site-packages를 확인하시면 됩니다.

 

 

새롭게 만든 가상환경에는 pip 등 아주 간단한 패키지들만 설치되어 있음을 알 수 있습니다. 가상환경을 만들면 이렇게 분명히 다른 장소에 저장되어 있는 패키지들을 가지고 작업을 진행합니다. 따라서 버전 충돌 문제를 피할 수 있는 것입니다. 

 

2. 가상환경 활성

가상환경을 만들었다고 무조건 가상환경에서 작업을 하는 것이 아닙니다. 가상환경을 활성시켜줘야지, global 환경에서 벗어나 가상환경에서 작업을 진행합니다. 가상환경을 활성화하기 위해서는 example_env 디렉토리 안에 있는 Scripts 디렉토리 내 activate.bat 파일을 실행시켜줘야 합니다. 

 

먼저 현재 작업 디렉토리를 example_env로 옮기겠습니다. 

 

> cd example_env

 

 

잘 이동했죠? 그 다음에는 Scripts 내 activate.bat을 실행시키겠습니다. 

 

> Scripts\activate.bat

 

 

가상환경이 활성화되었습니다. 앞에 (example_env)라는 표시가 생겼죠? example_env라는 가상환경에 들어왔다는 뜻입니다. 그러면 다시 pip list를 명령해보겠습니다. 

 

 

global 환경과 달리 단 두개의 패키지만 이 가상환경에는 설치되어 있음을 알 수 있습니다. 

 

3. 패키지 설치

이 활성화된 가상환경에 opencv 패키지를 설치해보겠습니다. 패키지를 설치할 때는 터미널에 다음과 같이 명령해줍니다.

 

> pip install 패키지이름

 

저는 opencv 패키지를 설치해야 하므로 pip install opencv-python을 명령해주겠습니다. 

 

 

잘 설치되었고요. example_env 가상환경 내에 설치된 패키지 목록에 변화가 생겼는지 pip list로 확인해보겠습니다.

 

example_env에 설치되어 있는 패키지들

 

opencv-python을 설치했는데 numpy 패키지도 함께 설치된 것을 확인할 수 있습니다. 왜냐하면 opencv-python 패키지는 numpy 패키지를 필요로 하기 때문입니다. 그래서 저절로 함께 설치된 것입니다. 이와 같이 어떤 패키지를 설치하다보면 동시에 그 패키지를 실행하기 위해 필요한 여러 다른 패키지들도 설치되곤 합니다. 

 

4. 간단한 예제 코드 실행

이제 이 가상환경에서 간단한 예제코드를 실행해보겠습니다. 방금 설치한 opencv 패키지를 활용하겠습니다. 컬러이미지를 읽어서 그레이스케일 이미지로 변환하는 예제입니다. 먼저 example_env 디렉토리 내에 example.py라는 파일을 하나 생성하겠습니다. 그리고 동일한 디렉토리에 컬러이미지 파일을 하나 넣어 주겠습니다. 다음과 같이 파일들이 위치해있어야 합니다. 

 

 

그리고 example.py에는 다음과 같은 코드를 복사해서 붙여줍니다. 

 

1
2
3
4
5
6
7
8
9
10
import cv2
 
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
 
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 컬러 이미지를 그레이스케일 이미지로 변환
 
cv2.imshow('color', img)
cv2.imshow('gray', gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cs

 

그러면 위 파이썬 스크립트를 실행시키겠습니다. 그러면 다음과 같이 컬러 이미지와 그레이 스케일 이미지가 보여질 것입니다. 잘 되셨나요? 

 

 

5. 만약 내가 짠 코드를 누군가 다른 사람이 쉽게 실행하도록 도우려면

방금 실행한 예제를 누군가 다른 사람도 실행하고 싶어할 수 있겠죠? 그러면 동일하게 패키지들을 설치해줘야합니다. 이때 내가 설치한 패키지를 그 사람도 설치하게 도와주는 방법이 있습니다. 터미널에 다음과 같이 명령해보세요. 

 

> pip freeze > requirements.txt

 

그러면 example_env 디렉토리에 requirements.txt라는 메모장 파일이 하나 생성됩니다. 열어보면 다음과 같은 내용이 담겨있습니다. 

 

 

보시다시피, 제가 설치한 패키지들이 나열되어 있습니다. 정확한 버전까지 명시되어 있고요.

 

저는 새로운 가상환경을 만들어서 거기에서 이 파일을 가지고 패키지들을 한번에 설치해보도록 하겠습니다. 물론 지금의 경우는 패키지 숫자가 적어서 하나씩 직접 설치해줘도 되지만, 설치해야할 패키지들이 많을 경우에는 이렇게 해주는 것이 좋습니다.

 

일단 지금 활성화되어 있는 example_env를 비활성화시키겠습니다. Scripts 내 deactivate.bat을 실행하면 됩니다. 

 

> Scripts\deactivate.bat

 

 

example_env 가상환경을 빠져나갔습니다. 앞에 있던 (example_env)가 사라졌죠? 이번에는 example1_env라는 이름의 새 가상환경을 만들겠습니다. 그 전에 상위 디렉토리로 이동하겠습니다. 

 

> cd ..

> python -m venv example1_env

 

만들어진 가상환경을 활성화시키겠습니다. 그 전에 example1_env 디렉토리로 이동하겠습니다. 

 

> cd example1_env

> Scripts\activate.bat

 

활성화되었고, 이제 아까 생성한 requirements.txt를 이용해 패키지들을 설치해보겠습니다. requirements.txt를 example1_env 디렉토리로 복사해서 넣어주세요. 우선 현재 활성화되어 있는 example1_env 가상환경에 설치되어 있는 패키지들의 리스트를 살펴보면 다음과 같습니다. 

 

 

requirements.txt를 이용해서 패키지들을 설치할 때 필요한 명령은 다음과 같습니다. 

 

> pip install -r requirements.txt

 

위 명령을 줬더니, 다음과 같이 패키지들이 잘 설치되었습니다.

 

 

pip list로 확인해보니, 아까 example_env에 설치된 패키지들과 동일하죠? 

 

example1_env에 설치되어 있는 패키지들

 

이제 제가 실행했던 예제를 문제없이 실행할 준비가 된 것입니다. 물론 python의 버전도 영향을 줄 수 있으니 맞춰주는 것이 좋습니다. 

 

오늘 살펴볼 내용은 여기까지입니다. 질문과 지적은 거침없이 해주시기 바랍니다. 제가 소개해드린 내용이 부분적으로 잘못되었을 수도 있으니 잘못된 것이 있다면 꼭 알려주시기 부탁드리며 글을 맺겠습니다.

 

관련 글

[Anaconda+python] 꼭 알아야할 conda 명령어 정리

 

참고자료

[1] dojang.io/mod/page/view.php?id=2470, 파이썬 코딩도장, "47.11 가상환경 사용하기"

 

 

(이 글은 2021-7-13에 마지막으로 수정되었습니다.)