※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다.
가상환경
1. 환경이란?
환경이란 python 버전, 설치되어 있는 라이브러리의 종류, 라이브러리의 버전 등의 상태를 함께 이야기하는 말로 자주 쓰인다.
2. 가상환경이란?
가상환경이란, 1개의 컴퓨터에 여러 개의 환경이 있지만, 어떤 환경을 사용할 때 컴퓨터에서는 마치 그 하나의 환경만 존재하는 것 처럼 보이는 것을 의미한다.
가상환경의 장점은 여러 개의 환경을 구축할 수 있다는 점이다. 전제로는 환경에는 가능한 설치되어 있는 라이브러리가 적은 것이 좋다.
그 이유는 1개의 환경에 어플리케이션 개발할 때마다 다양한 라이브러리를 설치하면 사용하지 않는 라이브러리가 설치되어 있거나, 언제가 설정이 바뀌거나, 비슷한 기능의 컴퓨터가 여러개 존재해 어느 쪽을 사용해야할지 판단하기 어려운 상황이 생기기도 하는데 이럴 경우 "어떤 것 때문에 에러가 발생하는지 모르겠다"라는 상태가 되기 싶다. 이때 발생한 문제의 원인을 찾기 위해 모든 라이브러리를 삭제한 후에 한 번 더 필요한 라이브러리만을 설치하는 것이 제일 쉽다. 이러한 번거로움을 방지하기 위해 가상환경을 이용하는 것이 메리트이다.
가상환경 생성까지의 흐름
- 가상환경의 확인
- 사용하고 싶은 라이브러리가 처음부터 Anaconda에 설치되어 있는지 확인
- 사용하고 싶은 라이브러리의 버전과 python 버전을 확인
- 가상환경 생성
- 가상환경 실행
- 가상환경에 라이브러리를 추가
1. 가상환경의 확인
Anaconda에 있는 모든 환경이 확인되는 커맨드는 다음과 같다.
$ conda info -e
-e는 --envs로 하여도 실행가능하다. 출력결과는 다음과 같을 것이다.
# conda environments:
#
root * C:\Users\Owner\Anaconda3
환경명과 디렉토리가 화면에 출려된다. 아스타리스크(*)로 표시되어 있는 환경이 현재 환경을 의미한다. root이란 Anaconda를 사용할 때 기초가 되는 환경이다. 가상환경을 사용하지 않고 Anaconda를 사용하고 있는 사람은 보통 root환경에 위치한다고 생각하면 된다.
2. 라이브러리의 확인
라이브러리를 확인할 수 있는 세 가지 방법에 대해 소개하도록 하겠다.
확인할 수 있는가 | 버전 확인이 가능한가 | 따로 찾아야할 필요가 있는가 |
|
방법1 | O | X | X |
방법2 | △ | O | X |
방법3 | O | O | O |
1) 방법1 : 검색하여 확인하는 방법(버전은 알 수 없다)
어떤 라이브러리가 그 환경에 설치되어 있는가를 확인할 수 있는 검색 방법에 대해 설명하도록 하겠다. 대화 실행 모드(REPL)로 하여, 라이브러리를 읽어 들여(import하여) 확인한다.
$ python
(python의 버전이나 Anacond의 버전이 적혀있다)
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>import 라이브러리명
라이브러리가 설치되어 있는 경우
>>> 아무것도 표시되지 않는다.
라이브러리가 설치되어 있지 않는 경우
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named '라이브러리명'
참고지만 아래의 커맨드를 실행하면 라이브러리가 저장되어 있는 파일 위치를 확인할 수 있다.
>>>라이브러리.__file__
>>> datetime.__file__
'C:(생략)\Anaconda3\lib\datetime.py'
>>> numpy.__file__
'C:(생략)\Anaconda3\lib\site-packages\numpy\__init__.py'
2) 방법2 : 검색하여 확인하는 방법 (버전을 알 수 있다)
라이브러리의 버전까지 확인하고 싶은 경우 아래의 커맨드는 실행한다.
$ python -m 라이브러리명 --version
라이브러리가 설치되어 있는 겨우
2.0.5 버전이 출력된다.
라이브러리가 설치되어 있지 않은 경우
No module named 라이브러리명
3) 방법3 : 목록을 출력해서 확인하는 방법(버전을 알 수 있다)
환경에 설치되어 있는 라이브러리의 목록을 출력한다.
$ conda list
혹은
$ conda list -n 환경명
-n은 --name으로 해서 실행하 수 있다. 환경명을 기재하지 않고 실행하면 지금 위치한 환경에 설치된 라이브러리가 출력된다. 환경명을 적어서 실행하면 지정한 환경에 설치된 라이브러리 목록이 출력된다.
# packages in environment at C:\Users\Owner\Anaconda3\envs\py36_Django20:
#
certifi 2016.2.28 py36_0
django 2.0.5 py36hd476221_0 anaconda
pip 9.0.1 py36_1
python 3.6.1 2
(이하 생략)
라이브러리명, 라이브러리 버전, 대응하는 python 버전이 출력된다.
3. 사용하고 싶은 라이브러리와 대응하는 python 버전을 확인
사용하고 싶은 라이브러리의 버전과 대응되는 python의 버전을 확인한다. 인터넷에 연결되어 있지 않다면 다음 커맨드는 에러가 발생한다.
$ conda search 라이브러리명
검색하고 싶은 라이브러리명이 일부라도 포함되어 있으면 라이브러리도 출력된다.
(예를 들면 numpy를 검색했을 때, numpydoc도 검색된다)
$ conda search --full-name 라이브러리명
이름이 완전히 일치하는 라이브러리만 찾고 싶으면 위의 커맨드를 입력하면 된다.
conda가 대응하고 있다.
Fetching package metadata ...........
django 1.7 py27_1 defaults
1.7 py33_1 defaults
1.7 py34_1 defaults
1.7.1 py27_0 defaults
1.7.1 py33_0 defaults
(이하 생략)
conda가 대응하고 있지 않다.
Fetching package metadata ...........
conda가 대응하고 있는 경우, 검색한 라이브러리의 이름(이번에는 Django), 라이브러리 버전, 대응하고 있는 python의 버전이 출력된다.
conda가 대응하고 있지 않은 경우, 스스로 인터넷에서 라이브러리의 대응하고 있는 python의 버전을 확인하길 바란다.
4. 가상환경의 생성
그럼 실제로 가상환경을 만들어보자.
$ conda create -n 환경명
위에서 설명했듯 동일하게 -n을 --name으로 해서 실행할 수 있다. 이 커맨드로 가상 환경을 만드는 것이 가능하지만, python 은 설치되어 있지 않다.
대부분의 경우 생성한 환경에 python을 설치하기 위해 동시에 python도 설치해야한다.
$ conda create -n 환경명 python
혹은
$ conda create -n 환경명 python=버전
버전을 지정하지 않으면, conda에서 대응하고 있는 최신의 버전으로 설치된다. 아까 사용하고 싶은 라이브러리의 버전과 대응하는 python 버전을 확인했으므로, 대응하는 python 버전을 설치하자. 예를 들면 다음과 같이 말이다.
$ conda create -n py35_pygame19 python=3.5
python의 다른 라이브러리도 동시에 설치하는 것도 가능하다. 다른 라이브러리도 버전을 지정하면 python의 버전에 맞게 설치된다.
$ conda create -n 환경명 python=3.6 numpy=1.12.1
또한, Anaconda에 설치되어 있는 모든 라이브러리를 가상환경에 설치하는 방법도 있다.
$ conda create -n 환경명 anaconda
이것으로 작성이 끝났다. 작성이 잘 됐는지는 conda info -e로 확인해보자.
5. 가상환경의 실행
가상환경을 만드는 것만으로는 그 환경을 쓸 수 있는 것은 아니다. 만든 가상환경을 사용하기 위해서는 그 가상환경을 실행해야한다.
MacOS의 경우
$ source activate 환경명
Windows의 경우
C:(생략)>activate 환경명
실행한 가상환경을 중단시키고 싶은 경우에는 터미널을 닫던가, 아래의 커맨드를 실행하면 된다.
MacOS의 경우
$ source deactivate
Windows의 경우
C:(생략)>deactivate
6. 가상환경에 라이브러리를 추가하기
Anaconda를 사용하는 사람에게는 라이브러리를 설치할 때, pip을 사용한 패턴과 conda를 사용하는 패턴 이렇게 두 가지 패턴이 존재한다. 그러나 Anaconda에서는 pip을 사용하면 에러가 발생하는 경우가 종종있다고 하여, 여기에서는 conda만 사용했다.
가상 환경에 라이브러리르 추가하는 방법은 두 가지 있다. conda가 대응하고 있는 경우와 대응하고 있지 않은 경우 나눠서 살펴보자.
먼저, conda가 대응하는 라이브러리인지 확인하기 위해 다음의 커맨드로 검색해본다.
$ conda search 라이브러리명
1) 라이브러리의 설치(conda에서 대응하고 있는 경우)
conda가 대응하고 있는 경우 아래의 커맨드를 실행하면 된다.
$ conda install 라이브러리명
설치한 라이브러리의 목록을 확인하고 싶은 경우 conda list 커맨드로 확인하면 된다.
2) 라이브러리의 설치(conda에서 대응하고 있지 않은 경우)
conda에서 대응하고 있지 않은 경우 아래의 순서를 통해 설치할 수 있다.
- 패키지 명(라이브러리명)을 결정한다.
- 설치하고 싶은 패키지명(라이브러리명)의 URL을 조사한다.
- 설치한다.
그럼 하나 하나 소개하도록 하겠다.
(1) 패키지명(라이브러리명)을 결정한다.
동일한 이름의 라이브러리도 다양한 종류가 있으므로, 어느것을 사용할지 검색해 결정한다.
$ anaconda search -t conda 라이브러리명
-t를 --package-type으로 입력해도 실행가능하다. 여기서는 pygame 라이브러리의 경우를 예로 든다.
Using Anaconda API: https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
Name | Version | Package Types | Platforms
------------------------- | ------ | --------------- | ---------------
CogSci/pygame | 1.9.2a0 | conda | linux-64, win-32, osx-64, win-64
: Python library based on SDL for making games
Maceo57/pygame | 1.9.2a0 | conda | osx-64
auto/pygamess | 0.3.0 | conda | linux-64
: https://github.com/kzfm/pygamess
(이하 생략)
(2) 설치하고 싶은 패키지명(라이브러리명)의 URL을 조사하기
설치하고 싶은 패키지명(라이브러리명)의 상세를 살펴보고, 설치에 사용할 URL을 조사한다.
$ anaconda show 패키지명(CogSci/pygame등)
Using Anaconda API: https://api.anaconda.org
Name: pygame
Summary: Python library based on SDL for making games
Access: public
Package Types: conda
Versions:
+ 1.9.2a0
To install this package with conda run:
conda install --channel https://conda.anaconda.org/CogSci pygame
출력 결과 중, 마지막에 적혀 있는 URL을 사용한다.
(3) 설치한다.
$ conda install -c 조사한URL 패키지명
$ conda install -c https://conda.anaconda.org/CogSci pygame
-c를 --channel로 적어도 실행가능하다.
가상환경의 삭제
$ conda remove -n 환경명 --all
설치와 동일하게 -n은 --name으로 적어도 실행된다.
참고자료
'IT > 기초 지식' 카테고리의 다른 글
[Jest] Jest로 유닛 테스트 작성하기 (기본) (0) | 2023.01.17 |
---|---|
Vagrant란? 그리고 간단한 사용법 (1) | 2022.10.04 |
[python] pip install을 했을 때, exit code1이나 Microsoft Visual C++ 14.0 is required 에러가 발생했을 때 대처법(windows) (0) | 2022.09.02 |
vtk 파일 포맷 (0) | 2022.08.03 |
[python] 일본 기상청 API 사용하기 (0) | 2022.07.19 |