• 2020. 5. 18.

    by. 윈썸지니

    반응형

     

    가상환경이 왜 필요한가

    가상환경이 왜 필요한가요?

     

    우리는 많은 프로그램 및 프로젝트를 수행하면 많은 패키지 설치 및 표준 라이브러리로 제공되지 않는 패키지를 서용 할 수 있습니다.

    또한 특정 패키지의 특정 버전을 필요로 하는 경우가 있는데 다른 프로그램에서는 상위 버전을 사용해야 하는 경우가 있습니다.

    이때 상위 버전이므로 하위버전도 지원을 할거라는 믿음으로 설치를 했다가 낭패를 보는 경우가 있습니다.

    이때는 버전 관리를 해야 합니다. 또한 충돌이 일어나서 한 프로그램이 동작을 안 할 수도 있습니다.

    또한 A라는 프로젝트는 A 라는 패키지가 필요한데 B 프로젝트는 필요가 없습니다.

    이러한 문제점을 해결하기 위해 가상환경을 사용합니다.

    만약 프로젝트 별로 가상환경을 사용한다고 하면 A 프로젝트에서 필요한 패키지를 따로 설치 할 수 있습니다.

    보통 여러개의 파이썬 프로젝트가 하나의 컴퓨터에서 충돌을 일으키지 않고 존재할 수 있도록 도와줍니다.

    이것을 파이썬이 지원하는 virtualenv 로 해결 할 수 있습니다.

     

    그럼 virtualenv뭔가요?

     

    virtualenv는 각 프로젝트 또는 프로그램별로 완전히 독립적인 가상의 환경을 만들어서 한 시스템인데 마치 서로 다른 시스템인 것 처럼 프로그램을 작성 할 수 있습니다. 가상환경은 파이썬 프로그램을 실행 할 수 있는 환경을 가진 복사본 같은 폴더 입니다.

    만약 A라는 가상 환경을 만들고 패키지를 설치 한다면 여기 폴더 아래에 설치됩니다.

     

    이제 가상 환경을 만들어 보면서 자세히 알아 보아요.

    가상환경을 설치 부터 해야 합니다.

    가상 환경을 만들려면 먼저 pip 를 이용하여 virtualenv 를 설치 해야 합니다.

    pip install virtualenv

    리눅스 는 root 권한으로 설치 합니다. Windows 와 별반 다르지 않습니다.

    sudo pip install virtualenv

    가상 환경을 설치 했으니 실제 사용할 가상환경을 생성 할 차례 입니다.

    위에서 가상 환경은 간단하게 생각하면 복사본을 가진 폴더라고 했습니다.

    my_env 라는 가상 환경을 만드는 방법 입니다.

    Virtualenv my_env

    가상환경을 생성 할 폴더 아래로 이동하셔서 만드세요. 현재 폴더 아래에 만들어 집니다.

    아래와 같이 하면 생성 되었다는 메시지가 나옵니다.

    가상 환경이 만들어진 폴더로 이동하셔서 생성된 디렉토리와 파일들을 확인 해 보세요.

    복사본을 가지고 있습니다.

    이제 가상 환경으로 만들어진 파이썬을 사용 해 봅니다.

    call [가상환경 경로\scripts\activate] 라고 합니다.

    이전에 my_env 라고 만들었으니 call my_env\scripts\activate 라고 하면 가상 환경으로 사용 가능 합니다.

    리눅스는 call 대신 source 라고 하면 됩니다.

    현재 환경이 가상 환경인지 혼동 될 수 있는데 앞 부분에 가상 환경 이름이 나옵니다. 이걸로 가상환경을 구분 할 수 있습니다.

    가상 환경에서 pip list 하면 기본만 설치 되어 있는 것을 확인 할 수 있습니다.

    가상 환경을 빠져 나오려면 deactivate 하면 됩니다.

    비교를 위해 deactivate 한 후 pip list 를 호출하여 설치된 패키지를 확인 하였습니다.

    가상 환경에 패키지 설치를 하려면 가상 환경을 activate 한 후 pip 를 이용하여 설치하면 됩니다.

    또 다른 방법이 있습니다. 명령어를 전체 경로로 입력하면 되는데 좀 불편하긴 하지만 가상 환경을 이해하는데 도움이 될 것 같아 적어 봅니다.

    위에서 가상 환경을 사용하기 위해 activate 를 하였는데 activate 를 하지 않고 가상환경에 설치된 python , pip 를 호출하면 됩니다.

    즉 저는 c:\temp\my_env 라고 만들었으므로 C:\temp\my_env\scripts\pip, C:\temp\my_env\scripts\python 이렇게 전체 경로를 주어 사용해도 동일합니다.

    편한 방법을 선택하시어 사용하시면 됩니다. 가상 환경이 복사본 폴더 같다라는 말을 이제는 이해 하셨을 겁니다.

    이제 가상 환경으로 버전 간의 영향을 미지치 않고 다수의 프로젝트를 할 수 있습니다. 

    반응형