[Python] VirtualEnv로 가상환경 설정 / Sublime Text 프로젝트 설정하기

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on print
Print

Project별로 Python의 버전이나 Library Dependency를 각각 설정하기 위해 가상환경(Virtual Environment)을 사용한다.

그런데 Python 명령어 기준으로 설명이 된 경우도 있고, Anaconda 기준으로 된 경우도 있고, Sublime Text 에디터의 플러그인 기준으로 된 경우들도 있어 약간 혼란스럽다.

Anaconda에서 conda create로 생성한 환경을 Sublime에 가져오려면 어떻게 해야 하는 걸까? 지금까지 파악한 내용은 한번쯤 정리할 필요가 있어 문서를 작성한다.

혹, 오류 발견하시면 그냥 지나치시 마시고, 코멘트 부탁드립니다. ^^

실행환경
– Windows 10 64bit
– Anaconda 4.6.7 (Python 3.7.1)
– Sublime Text 3.1.1

(1) VirtualEnv
(2) Conda로 가상환경 만들기
(3) Sublime Text에서 가상환경 만들기


(1) VirtualEnv 명령어로 가상환경 만들기

cmd 창을 띄우고 가상환경을 생성할 디렉토리로 이동하여 다음의 명령을 실행한다.

virtualenv [생성할 가상환경의 이름]

만약 python의 버전을 달리 하고 싶다면 아래의 옵션을 주어서 실행한다.

virtualenv -p [다른 버전의 python 실행파일 경로] [생성할 가상환경의 이름]

즉, VirtualEnv를 사용하여 다른 버전의 python을 사용하는 가상환경을 만들고자 하는 경우, 해당 버전의 python 실행환경이 사전에 설치되어 있어야 하는 불편함이 있다.

python 버전은 동일하게 3.7.1로, 가상환경 이름은 env001로 주어서 가상환경을 만들어 보도록 하자.

VirtualEnv로 env001 가상환경 생성
VirtualEnv로 env001 가상환경 생성

탐색기에서 살펴보면
env001
— include
— Lib
— Scripts
— tcl
과 같은 폴더 구조가 생성되었다.

이 가상환경을 실행시키기 위해선 Scripts 폴더 아래있는 activate 배치 파일을 실행시키면 되며, 실행환경을 그만 사용하고 다른 작업을 하고 싶을 땐 deactivate 배치 파일을 실행시키면 된다.

activate 배치 파일을 실행시키면 프롬프트가 (env001)로 바뀌는 것을 확인할 수 있다.

env001 가상환경을 activate하고, deactivate
env001 가상환경을 activate하고, deactivate

위에 path를 확인하면 가상환경의 경로가 제일 앞에 추가로 붙은 것을 확인할 수 있다. deactivate 후에 다시 path를 실행해보면 가상환경의 python 실행경로가 빠져있는 것도 확인할 수 있다.


(2) Conda로 가상환경 만들기

anaconda의 conda 명령어를 사용하는 경우 virtualenv를 사용하는 경우보다 몇가지 편리한 점이 있다.

a. python의 버전을 지정해주면 conda가 알아서 다운받아 설치해준다.
b. 생성된 가상환경들의 List를 조회할 수 있다. (어떤 가상환경은 조회가 안되기도 함)

가상환경 생성하기

conda create -n [가상환경 이름] python=[버전]

가상환경 리스트 보기

conda env list

가상환경 활성화, 비활성화

activate [가상환경 이름]
deactivate   또는    conda deactivate

가상환경 삭제

conda env remove -n [가상환경 이름]

가상환경 env002를 python 버전 3.6으로 만들어보자. (tensorflow는 현재 기준으로 python 3.6을 지원하고 있음)

conda create 명령어로 env002 환경 생성하기
conda create 명령어로 env002 환경 생성하기
env002 가상환경을 활성화하고, python 버전을 확인한다.
env002 가상환경을 활성화하고, python 버전을 확인한다.


3. Sublime Text 에디터에서 가상환경 만들기

Sublime Text 에디터에 Anaconda 패키지와 설치한다.

그 다음 위에서 생성한 env001, env002를 사용하는 prj001, prj002를 각각 만들어보겠다.

인터넷 설명대로라면 VirtualEnv의 Use Settings를 아래와 같이 수정하면,

{
	"virtualenv_directories":
	[
		"C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs",
		"C:\\ProgramData\\Anaconda3\\envs",
		"C:\\Users\\bek_s\\.conda\\envs",
	]
}

Ctrl + Shift + P (Command Palette의 단축키)을 눌러 VirtualEnv: Activate 명령을 선택하면

VirtualEnv Lists
VirtualEnv: Activate를 누르면 다음의 가상환경 리스트를 선택할 수 있다

env002를 찾을 수 없다. 왜 찾을 수 없는지는 모르겠다. ㅜㅜ

그래서 조금 다른 방법으로 Project별로 가상환경을 사용해보자.

a. Project > Save Project As 명령어로 prj001 생성

b. Project > Edit Project를 선택하면 prj001.sublime-project 파일이 열린다. 아래 내용을 붙여넣자.

{

	"build_systems":
	[
		{
			"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
			"name": "Anaconda Python Builder",
			"selector": "source.python",
			"shell_cmd": "\"C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\Scripts\\python\" -u \"$file\""
		}
	],
	"settings":
	{
		"python_interpreter": "C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\python"
	},
	"virtualenv": "C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001"
}

c. helloworld.py를 prj001 아래 생성하여 Python 버전과 Path를 확인하자.

import sys

print ("hello world ", sys.version_info)
print (sys.path)
hello world  sys.version_info(major=3, minor=7, micro=1, releaselevel='final', serial=0)
['C:\\Users\\bek_s\\sublimetext\\prj001', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\Scripts\\python37.zip', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\DLLs', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\lib', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\Scripts', 'c:\\programdata\\anaconda3\\Lib', 'c:\\programdata\\anaconda3\\DLLs', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001', 'C:\\Users\\bek_s\\AppData\\Local\\conda\\conda\\envs\\env001\\lib\\site-packages']
[Finished in 0.2s]

Python 3.7.1 버전과 가상환경 경로가 Path에 잘 잡혀 있는 것을 확인할 수 있다.

마찬가지로 prj002를 아래와 같이 생성하고, 확인할 수 있다.
(Python 3.6.8 버전과 Tensorflow 모듈 참조 가능)

{
	"build_systems":
	[
		{
			"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
			"name": "Anaconda Python Builder",
			"selector": "source.python",
			"shell_cmd": "\"C:\\Users\\bek_s\\.conda\\envs\\env002\\python\" -u \"$file\""
		}
	],
	"settings":
	{
		"python_interpreter": "C:\\Users\\bek_s\\.conda\\envs\\env002\\python"
	},
	"virtualenv": "C:\\Users\\bek_s\\.conda\\envs\\env002"
}
import sys
import tensorflow as tf

print ("hello world ", sys.version_info)
print ("hello tensorflow", tf.VERSION)
print (sys.path)
hello world  sys.version_info(major=3, minor=6, micro=8, releaselevel='final', serial=0)
hello tensorflow 1.12.0
['C:\\Users\\bek_s\\sublimetext\\prj002', 'C:\\Users\\bek_s\\.conda\\envs\\env002\\python36.zip', 'C:\\Users\\bek_s\\.conda\\envs\\env002\\DLLs', 'C:\\Users\\bek_s\\.conda\\envs\\env002\\lib', 'C:\\Users\\bek_s\\.conda\\envs\\env002', 'C:\\Users\\bek_s\\AppData\\Roaming\\Python\\Python36\\site-packages', 'C:\\Users\\bek_s\\.conda\\envs\\env002\\lib\\site-packages']
[Finished in 2.3s]

이런 식으로 설정하면, VirtualEnv: Activate와 Deactivate 신경쓸 필요 없이 정의된 가상환경 기준으로 개발 작업을 진행할 수 있다.

참조 문서

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다

  • 카테고리

  • Count per Day

    • 1090This post:
    • 102802Total reads:
    • 58430Total visitors:
    • 29Reads today:
    • 26Visitors today:
    • 2019년 3월 10일Counter starts on: