Programming

[python] python virtualenv (가상환경) 사용하기

IT오이시이 2024. 4. 26. 13:36
728x90

 

[python] python virtualenv (가상환경) 사용하기 

Python virtualenv (가상환경,venv)은 파이썬 패키지 및 응용 프로그램을 독립적인 환경에 설치하고 실행할 수 있는 파이썬 모듈입니다. 가상 환경을 사용하면 각 프로젝트별로 필요한 패키지를 별도의 공간에 설치하여 각 프로젝트 간에 서로 영향을 미치지 않습니다. 이를 통해 의존성 문제를 해결할 수 있습니다.

python venv 가상환경을 이용하는 방법
1. 가상 환경을 만들 디렉토리를 선택합니다.
2. 새로운 가상 환경을 생성합니다.
3. venv 가상 환경을 사용하도록 활성화합니다.
4. 가상환경에서 패키지를 설치 합니다.
5. 가상 환경을 비활성화합니다.
6. 패키지 설치 시 pip 버전이 낮은 경우

 
 

python venv 가상환경을 이용하는 방법

가상 환경을 사용하면 하나의 시스템에 여러 프로젝트를 동시에 설치할 수 있습니다. 각 프로젝트에서는 필요한 패키지만 설치하여 다른 프로젝트에 영향을 주지 않습니다. 또한 가상 환경을 사용하여 프로젝트를 배포할 때, 패키지 의존성을 포함한 프로젝트를 전체 시스템에 설치하는 것보다 훨씬 효율적입니다.
 
다음은 venv를 사용하여 가상 환경을 만드는 방법입니다.
 

1. 가상 환경을 만들 디렉토리를 선택합니다.

     - 파이썬 소스가 있는 디렉토리로 이동을 합니다.

$ cd /data/python-project



2. 새로운 가상 환경을 생성합니다.

   다음과 같이 myenv 라는 환경을 만드는 것입니다. (myenv는 가상 환경의 이름입니다.)

$ python -m venv myenv

 
다음과 같은 오류가 발생 할 수도 있습니다.

$ python -m venv myenv
  Error: [Errno 1] Operation not permitted: 'lib' -> '/data/python-project/myenv/lib64'

아마도 lib64  디렉토리가 없어서 그런 듯 합니다. 아래와 같이 디렉토리를 추가하고 다시 실행해 봅니다.

$ mkdir -p /data/python-project/myenv/lib64

$ python -m venv myenv
Unable to symlink '/usr/bin/python' to '/data/python-project/myenv/bin/python'
Unable to symlink '/data/python-project/myenv/bin/python' to '/data/python-project/myenv/bin/python3'
Unable to symlink '/data/python-project/myenv/bin/python' to '/data/python-project/myenv/bin/python3.9'

* 유사한 오류가 나고 있지만 디렉토리에 파일이 있다면 정상입니다. 
$ ls -al  /data/python-project/myenv/bin/python3
-rwxrwx---. 1 root vboxsf 15448 4월 28 12:52 /data/python-project/myenv/bin/python3

 

3. venv 가상 환경을 사용하도록 활성화합니다.

[Windows에서]
    myenv\Scripts\activate.bat

[리눅스에서]
 `source myenv/bin/activate`  or   `.  myenv/bin/activate `


[가상환경 확인과 설정]

1. 다음과 같이 활성화를 하면 Prompt에 (myenv) 가 표시됩니다.
 [user@localhost python-project]$ source myenv/bin/activate
(myenv) [user@localhost python-project]$ 


2.  pip 모듈이 설치되어 있는지 확인 합니다. 

(1) pip 모듈이 설치되어 있는지 확인합니다.
(myenv) [user@localhost python-project]$
python -m pip show pip
   Name: pip
   Version: 23.1.2
   Summary: The PyPA recommended tool for installing Python packages.

(2) pip 모듈을 설치합니다.
(myenv) [user@localhost python-project]$ python -m ensurepip --default-pip
   Looking in links: /tmp/tmp7l5avx3l
   Requirement already satisfied: setuptools in ./myenv/lib/python3.9/site-packages (53.0.0)
   Requirement already satisfied: pip in ./myenv/lib/python3.9/site-packages (23.1.2)

(3) pip 모듈이 설치되었으므로 다시 확인합니다.
(myenv) [user@localhost python-project]$python -m pip show pip
   Name: pip
   Version: 23.1.2
   Summary: The PyPA recommended tool for installing Python packages.

 
다음과 같이 리눅스 프롬프트 앞에 (myenv) 라는 태그가 붙어 있습니다. 이 상태로 activate 된 상태를 확인 가능합니다.
 - venv를 사용하면 기본으로 설정된 python 경로가 바뀐다는 것을 알수 있습니다. 

 [user@localhost python-project]$  which python
     /usr/bin/python
[user@localhost python-project]$ source myenv/bin/activate

 # venv 를 이용하면 아래와 같이 myenv에서 사용하는 경로들로 변경이됩니다.
(myenv) [user@localhost python-project]$ which python
    /data/python-project/myenv/bin/python    
(myenv) [user@localhost python-project]$ which activate
   /data/python-project/myenv/bin/activate

 

4. 가상환경에서 패키지를 설치 합니다.

가상환경을 사용하게 되면 프로젝트 하위 디렉토리에 venv 디렉토리를 배치하여 프로젝트별로 필요한 패키지 관리가 가능합니다.
myenv 명령을 수행한 디렉토리가 "/data/python-project" 라면   "/data/python-project/myenv" 폴더가 만들어지고 그 아래 python, pip, 그리고 패키지들의 파일들이 저장됩니다. 아래와 같이 예시를 참조 바랍니다.

[가상 환경에서 패키지 설치]
(myenv) $ pip install package_name

# venv 의 myenv 의 디렉토리 아래 package 들이 설치 됨을 확인 할 수 있습니다.
(myenv) $ ls -al /data/python-project/myenv/lib64/python3.9/site-packages

 

5. 가상 환경을 비활성화합니다.

   dactivate를 실행하면 셀 프롬프트에 (myenv)가 사라집니다.

(myenv) [username@localhost bin]$ deactivate
[usernane@localhost bin]$ which python
    /usr/bin/python

[usernane@localhost bin]$ which activate
    /usr/bin/which: no activate ...

 
 

6. 패키지 설치 시 pip 버전이 낮은 경우

  - 주로 pip 버전 이 맞지 않는 경우 설치가 안됩니다.  아래와 같이 selinium 패키지를 설치를 해보았는데 오류가 납니다. 이경우 pip 업그레이드가 필요합니다.

pip  버전이 낮아서 생기는 문제 해결

$ (myenv) [user@localhost python-project]$ pip install selinium
ERROR: Could not find a version that satisfies the requirement selinium (from versions: none) ERROR: No matching distribution found for selinium WARNING: You are using pip version 21.2.3; however, version 23.1.2 is available. You should consider upgrading via the '/data/python-project/myenv/bin/python -m pip install --upgrade pip' command.

 

1) python 으로 pip를 설치하는 방법

(myenv) [user@localhost python-project]$ pip --version
pip 21.2.3 from /data/python-project/myenv/lib/python3.9/site-packages/pip (python 3.9)

(myenv) [user@localhost python-project]$ python -m pip install --upgrade pip
Requirement already satisfied: pip in ./myenv/lib/python3.9/site-packages (21.2.3) Collecting pip

 

2) pip 설치 스크립트를 다운 받아 설치

(myenv) [user@localhost python-project]$ wget  https://bootstrap.pypa.io/get-pip.py --no-check-certificate
(myenv) [user@localhost python-project]$ python get-pip.py --trusted-host pypi.org --trusted-host files.pythonhosted.org Collecting pip Using cached pip-23.1.2-py3-none-any.whl (2.1 MB) Installing collected packages: pip Attempting uninstall: pip Found existing installation: pip 23.1.2 Uninstalling pip-23.1.2: Successfully uninstalled pip-23.1.2
Successfully installed pip-23.1.2

다른 계정(root)에서 설치한 경우 패키지 충돌이 있어서 해당 디렉토리를 `user` (사용자계정)  으로 변경 하고 설치해본다.
[root]# chown -R user:user  /usr/local/lib/python3.9/site-packages   

 
위와 같이 pip  버전을 업그레이드를 마쳤습니다. 다음으로 selenium을 다시 설치하면 되겠습니다.
 

3)  selenium 패키지를 재 설치합니다.

(myenv) [user@localhost python-project]$ pip install selenium
  Collecting selenium Using cached selenium-4.9.0-py3-none-any.whl (6.5 MB)

 
이상으로  python virtualenv 를 이용해서 패키지를 설치하는 것을 해보았습니다.
 
패키지 설치에서 오류가 나는 경우는 아래를 참조 바랍니다.

[ 파이썬 SSL인증서 오류 참고]
1. 파이썬 설치 오류 해결 pip SSLCertVerificationError
2. git  https repository 연결시 SSL 인증서 오류 해결
3. (Pycharm)  PIP 패키지 설치 SSL 인증서 오류 해결 

 

 

728x90
반응형