티스토리 뷰

Back-ends/python

Python 가상환경

이주성 2018. 9. 12. 10:15
Python 가상환경

Python 가상환경

소개

파이썬 응용 프로그램은 종종 표준 라이브러리의 일부로 제공되지 않는 패키지와 모듈을 사용합니다. 응용 프로그램에 특정 버전의 라이브러리가 필요할 수 있는데, 응용 프로그램에 특정 버그가 수정된 버전이 필요하거나, 라이브러리 인터페이스의 구식 버전을 사용하여 응용 프로그램을 작성할 수도 있기 때문입니다.

즉, 하나의 파이썬 설치가 모든 응용 프로그램의 요구 사항을 충족시키는 것이 불가능할 수도 있습니다. 응용 프로그램 A에 특정 모듈의 버전 1.0이 필요하지만, 응용 프로그램 B에 버전 2.0이 필요한 경우, 요구 사항이 충돌하고, 버전 1.0 또는 2.0을 설치하면 어느 한 응용 프로그램은 실행할 수 없게 됩니다.

이 문제에 대한 해결책은 가상 환경 을 만드는 것입니다. 이 가상 환경은 특정 버전 파이썬 설치와 여러 추가 패키지를 포함하는 완비된 디렉터리 트리입니다.

가상환경 만들기

tutorial-env라는 가상환경을 만든다.

$ cd ~ # 왠만하면 HOME에서 만드는 것이 편하다.
# python2의 경우
$ pip install virtualenv virtualenvwrapper
$ python -m virtualenv --python=python2.7 tutorial-env
# python3의 경우 
$ python3 -m venv tutorial-env

그럼 env환경으로 들어가보자. HOME폴더에 tutorial-env라는 폴더가 생겼다. 안에는 이 가상환경에서만 사용하는 bin, lib, include가 있다. lib폴더에는 이 가상환경에서만 사용되는 python 라이브러리들이 설치되어 있다.

$ cd ~/tutorial-env
$ ls
bin  include  lib  pyvenv.cfg  share
$ cd lib/python3.5/site-packages/
/lib/python3.5/site-packages $ ls
aiohttp                                           mutagen-1.41.0.dist-info
aiohttp-3.4.0.dist-info                           netdisco
aiohttp_cors                                      netdisco-2.0.0.dist-info

가상환경 활성화

아래와 같이 활성화를 하면 python 가상환경에 들어온것이다. python을 쳐보면, /usr/bin/python이 아니라, venv안에 있는 python이다.

$ source tutorial-env/bin/activate
(tutorial-env) $ which python
/home/pi/tutorial-env/bin/python

가상환경에서 라이브러리 설치를 해보자. 가상환경에서 인스톨을 하면 /tutorial-env/lib 여기서 중요한 것은 ROOT 환경에서 pip3을 쓰면 **/usr/local/lib/**에 라이브러리를 설치한다는 것이다. 즉 가상환경을 쓰는 의미가 없다.

# sudo pip3 install 을 하지 말자	
(tutorial-env) $ pip3 install hbmqtt 
(tutorial-env) $ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hbmqtt
>>> help(hbmqtt)

가상환경 비활성화

deactivate명령어로 가상환경을 비활성화 한다. 가상환경의 python이 아닌 /usr/bin/python을 쓰는 것이다.

(tutorial-env) $ deactivate
$ python
/usr/bin/python

그럼 가상환경에서 설치한 hbmqtt라이브러리를 한번 써보자. 아래처럼 import에러가 발생한다. 즉 설치가 안됐단다^^

$ python
Python 2.7.13 (default, Nov 24 2017, 17:33:09)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hbmqtt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named hbmqtt

Python 가상환경.md


'Back-ends > python' 카테고리의 다른 글

정규식 (Regular Expression)  (0) 2018.12.30
PATH 설정 (python)  (0) 2017.12.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함