다운로드
작성자: admin 작성일시: 2016-05-01 19:30:47 조회수: 7932 다운로드: 343
카테고리: Python 태그목록:

파이썬 패키지 설치하기

라이브러리와 패키지

집을 지을 때, 시멘트나 철근이 필요하다고 해서 집을 짓는 사람이 시멘트 제작이나 철광석 제련부터 할 수는 없다. 대부분의 건축에 공통적으로 사용되는 부품이나 재료는 이미 만들어진 것을 사서 쓰는 것이 효율적이다.

프로그램도 마찬가지어서 필요한 모든 부분을 한 사람이 만드는 경우는 거의 없으며 여러가지 프로그램에 공통적으로 사용되는 부분은 해당 분야의 전문가가 미리 만들어 놓은 프로그램을 가져다 사용하는 것이 현명한 선택이다. 이처럼 다른 프로그램 제작에 사용하기 위해 미리 만들어진 프로그램의 집합을 라이브러리(library)라고 한다. 파이썬에서는 라이브러리라는 용어 대신 패키지(package)라는 말을 주로 사용한다.

패키지 설치

패키지는 원래 파이썬 인터프리터와는 별도로 설치해야 한다. 몇몇 패키지는 파이썬을 설치할 때 함께 설치되며 이러한 패키지를 기본 패키지라고 한다. 그러나 대부분의 패키지는 파이썬을 설치한 후에 별도로 설치한다.

아나콘다 등의 파이썬 배포판을 사용할 때는 배포판에 따라 다양한 패키지들을 추가로 기본 설치해 주기도 한다. 그러나 배포판에서 설치해 주는 기본 패키지 외에 추가로 패키지를 더 사용해야 할 때는 사용자가 수동으로 설치해야 한다.

C, C++, 자바와 같은 언어는 새로운 라이브러리를 설치할 때 그 라이브러리를 제공하는 웹사이트를 일일이 방문하여 소스코드나 바이너리를 내려받아야 한다. 하지만 파이썬을 비롯한 다른 프로그래밍 언어들은 모든 패키지를 한 서버에 등록하게 함으로써 간단한 명령어만으로 패키지를 쉽게 내려받아 설치할 수 있다.

기본적으로 모든 파이썬 패키지는 PyPI 서버(https://pypi.org/) 라는 공식 패키지 서버에 등록된다. 아나콘다 배포판의 경우에는 PyPI가 아닌 독자적인 패키지 서버를 운영하고 있으며, 운영체제별로 미리 빌드되어있는 패키지를 제공하는 대신 PyPI보다는 제공하는 패키지의 수가 적다.

패키지 관리자

패키지를 설치하기 위한 프로그램을 패키지 관리자라고 한다. 파이썬에서 pip라고 하는 패키지 관리자를 기본으로 제공하지만, 아나콘다 배포판에서는 conda라고 하는 아나콘다 전용 패키지 관리자도 제공한다. conda는 아나콘다 배포판이 설치될 때 자동으로 함께 설치된다.

pip를 사용할 때는 pip list 명령으로 설치된 패키지 목록을 볼 수 있다.

$ pip list 

alabaster (0.7.10)
anaconda-client (1.6.5)
anaconda-navigator (1.6.9)
anaconda-project (0.8.0)
appnope (0.1.0)
appscript (1.0.1)

... (이하 생략)

conda를 사용할 때는 conda list 명령으로 설치된 패키지 목록을 볼 수 있다.

conda list

# packages in environment at /Users/user/anaconda3:
#
_ipyw_jlab_nb_ext_conf    0.1.0            py36h2fc01ae_0  
alabaster                 0.7.10           py36h174008c_0  
anaconda                  5.0.1            py36h6e48e2d_1  
anaconda-client           1.6.5            py36h04cfe59_0  
anaconda-navigator        1.6.9            py36ha31b149_0  
anaconda-project          0.8.0            py36h99320b2_0  
appnope                   0.1.0            py36hf537a9a_0  

... (이하 생략)

pip를 이용한 패키지 설치

pip를 이용하여 패키지를 설치하려면 콘솔 창에서 다음과 같이 입력한다.

pip install 패키지이름

예를 들어 quandl이라는 이름의 패키지를 설치하려면 pip install quandl 이라고 명령한다.

$ pip install quandl
Collecting quandl
  Downloading Quandl-3.2.0-py2.py3-none-any.whl
Requirement already satisfied: six in /Users/user/anaconda3/lib/python3.6/site-packages (from quandl)
Requirement already satisfied: pandas>=0.14 in /Users/user/anaconda3/lib/python3.6/site-packages (from quandl)
Collecting more-itertools (from quandl)
  Downloading more_itertools-3.2.0-py3-none-any.whl
Requirement already satisfied: python-dateutil in /Users/user/anaconda3/lib/python3.6/site-packages (from quandl)
Collecting inflection>=0.3.1 (from quandl)
  Downloading inflection-0.3.1.tar.gz
Collecting requests<2.18,>=2.7.0 (from quandl)
  Downloading requests-2.17.3-py2.py3-none-any.whl (87kB)
    100% |████████████████████████████████| 92kB 1.4MB/s 
Requirement already satisfied: numpy>=1.8 in /Users/user/anaconda3/lib/python3.6/site-packages (from quandl)
Requirement already satisfied: pytz>=2011k in /Users/user/anaconda3/lib/python3.6/site-packages (from pandas>=0.14->quandl)
Collecting urllib3<1.22,>=1.21.1 (from requests<2.18,>=2.7.0->quandl)
  Downloading urllib3-1.21.1-py2.py3-none-any.whl (131kB)
    100% |████████████████████████████████| 133kB 1.3MB/s 
Requirement already satisfied: certifi>=2017.4.17 in /Users/user/anaconda3/lib/python3.6/site-packages (from requests<2.18,>=2.7.0->quandl)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Users/user/anaconda3/lib/python3.6/site-packages (from requests<2.18,>=2.7.0->quandl)
Collecting idna<2.6,>=2.5 (from requests<2.18,>=2.7.0->quandl)
  Downloading idna-2.5-py2.py3-none-any.whl (55kB)
    100% |████████████████████████████████| 61kB 1.7MB/s 
Building wheels for collected packages: inflection
  Running setup.py bdist_wheel for inflection ... done
  Stored in directory: /Users/user/Library/Caches/pip/wheels/41/fa/e9/2995f4ab121e9f30f342fa2d43f0b27f851a0cb9f0d98d3b45
Successfully built inflection
Installing collected packages: more-itertools, inflection, urllib3, idna, requests, quandl
  Found existing installation: urllib3 1.22
    Uninstalling urllib3-1.22:
      Successfully uninstalled urllib3-1.22
  Found existing installation: idna 2.6
    Uninstalling idna-2.6:
      Successfully uninstalled idna-2.6
  Found existing installation: requests 2.18.4
    Uninstalling requests-2.18.4:
      Successfully uninstalled requests-2.18.4
Successfully installed idna-2.5 inflection-0.3.1 more-itertools-3.2.0 quandl-3.2.0 requests-2.17.3 urllib3-1.21.1

conda를 이용한 패키지 설치

대부분의 패키지는 내부적으로는 다른 패키지의 기능을 사용한다. 예를 들어 만약 패키지 A가 패키지 B의 기능을 사용하고 있다면 패키지 B가 설치되어 있을 때만 패키지 A를 사용할 수 있다. 이때 패키지 A가 패키지 B에 의존(depend)한다고 말한다.

아나콘다 배포판에서 제공하는 conda 패키지 관리자는 이러한 의존성 관리 성능이 뛰어나다. 설치하거나 제거할 패키지간의 의존성을 파악하고 만약 설치하고자 하는 패키지가 의존하고 있는 다른 패키지가 설치되어 있지 않거나 버전이 맞지 않으면 필요한 패키지를 설치해 주거나 업그레이드 또는 다운그레이드 해 준다.

conda를 이용하여 패키지를 설치하는 명령어는 다음과 같다.

conda install 패키지이름

예를 들어 flake8이라는 이름의 패키지를 설치하려면 다음과 같이 conda install flake8이라고 명령한다. conda 패키지 관리자가 flake8 설치에 필요한 다른 패키지까지도 자동으로 설치하거나 업그레이드 해 주는 것을 볼 수 있다.

$ conda install flake8
Fetching package metadata ...........
Solving package specifications: .

Package plan for installation in environment /Users/user/anaconda3:

The following NEW packages will be INSTALLED:

    flake8:   3.4.1-py36h43eefc0_0

The following packages will be UPDATED:

    anaconda: 5.0.1-py36h6e48e2d_1 --> custom-py36ha4fed55_0

The following packages will be DOWNGRADED:

    pyflakes: 1.6.0-py36hea45e83_0 --> 1.5.0-py36h7fdd505_1 

Proceed ([y]/n)? 

anaconda-custo 100% |###################################################| Time: 0:00:00   2.63 MB/s
pyflakes-1.5.0 100% |###################################################| Time: 0:00:00   3.68 MB/s
flake8-3.4.1-p 100% |###################################################| Time: 0:00:00   8.95 MB/s

질문/덧글

cmd에서 python으로 접속 시 import되는데 p940*** 2018년 7월 23일 3:40 오후

cmd에서 python으로 실행해 import pandas하면 되는데
atom에서 import해서 코드 작성하 뒤 cmd에서 해당 파일을 실행하면 해당 module이 없다고 import오류가 납니다..
뭐가 잘못된걸까요??ㅜㅜ

답변: cmd에서 python으로 접속 시 import되는데 관리자 2018년 7월 24일 9:25 오전

편집기의 실행 환경이나 패스를 살펴보세요.