"10. 라이브러리"의 두 판 사이의 차이
잔글 |
|||
(같은 사용자의 중간 판 15개는 보이지 않습니다) | |||
4번째 줄: | 4번째 줄: | ||
라이브러리, 패키지, 모듈. 어떻게 구분할 수 있을까? | 라이브러리, 패키지, 모듈. 어떻게 구분할 수 있을까? | ||
− | + | {| class="wikitable" | |
− | 서브루틴, 함수들의 모음. | + | !이름 |
+ | !설명 | ||
+ | |- | ||
+ | |모듈 | ||
+ | |파일 하나. 파이썬의 경우, .py 파일을 보통 모듈이라 칭한다. | ||
+ | 자주 사용하는 함수들을 파일로 작성한 것. | ||
+ | |- | ||
+ | |패키지 | ||
+ | |모듈의 집함을 패키지라 부르기도 한다. 일반적으로 init.py를 포함한다. | ||
+ | |- | ||
+ | |라이브러리 | ||
+ | |패키지와 많이 혼용된다. | ||
+ | 도서관에 책이 많은 것에 비유되어 라이브러리라 한다. | ||
+ | |}서브루틴, 함수들의 모음. | ||
===정의=== | ===정의=== | ||
.py 확장자를 갖는 파일을 모듈이라 하며, 이들을 특정 디렉토리에 모아둔 것을 패키지라 부른다. 그리고 모듈 혹은 패키지를 라이브러리라 부르기도 한다. | .py 확장자를 갖는 파일을 모듈이라 하며, 이들을 특정 디렉토리에 모아둔 것을 패키지라 부른다. 그리고 모듈 혹은 패키지를 라이브러리라 부르기도 한다. | ||
12번째 줄: | 25번째 줄: | ||
===현재 설치된 라이브러리 확인=== | ===현재 설치된 라이브러리 확인=== | ||
현재 설치된 라이브러리는 help('modules')로 확인 가능. help('모듈명')으로 상세설명을 볼 수 있다. | 현재 설치된 라이브러리는 help('modules')로 확인 가능. help('모듈명')으로 상세설명을 볼 수 있다. | ||
+ | {| class="wikitable" | ||
+ | !의도 | ||
+ | !방법 | ||
+ | !설명 | ||
+ | |- | ||
+ | |라이브러리 버전 확인 | ||
+ | |pip show 라이브러리명 | ||
+ | |프롬프트에서 진행한다. | ||
+ | |} | ||
===모듈 설치 관련=== | ===모듈 설치 관련=== | ||
pip을 사용한다.(Python Install Package의 약자.) | pip을 사용한다.(Python Install Package의 약자.) | ||
37번째 줄: | 59번째 줄: | ||
|pip install 패키지명 --upgrade | |pip install 패키지명 --upgrade | ||
| | | | ||
+ | |- | ||
+ | |모듈 삭제 | ||
+ | |pip uninstall 패키지명 | ||
+ | |해당 라이브러리를 지운다. | ||
|} | |} | ||
− | ===이외=== | + | ===이외 자주 사용하는 기능=== |
{| class="wikitable" | {| class="wikitable" | ||
!의도 | !의도 | ||
47번째 줄: | 73번째 줄: | ||
|pip list | |pip list | ||
|현재 가상환경에 설치된 라이브러리를 표시해준다. | |현재 가상환경에 설치된 라이브러리를 표시해준다. | ||
+ | |- | ||
+ | |모듈 업데이트 | ||
+ | |pip install --upgrade 모듈명 | ||
+ | <code>-U</code>, <code>--upgrade</code> | ||
+ | |최신버전으로. | ||
+ | |- | ||
+ | |모듈 버전 바꾸기 | ||
+ | |pip install 모듈명==버전 | ||
+ | |기존에 설치된 것을 지우고 해당 버전을 설치한다. | ||
+ | |- | ||
+ | |라이브러리 백업 | ||
+ | |설치한 패키지들에 대한 정보를 담는다. | ||
+ | |pip freeze > requirements.txt | ||
+ | |- | ||
+ | |라이브러리 백업 풀기 | ||
+ | |패키지들에 대한 정보를 토대로 그대로 설치한다. | ||
+ | |pip install -r requirements.txt | ||
+ | |} | ||
+ | |||
+ | === 이외 옵션 === | ||
+ | {| class="wikitable" | ||
+ | !의도 | ||
+ | !옵션 | ||
+ | |- | ||
+ | |출력 최소화 | ||
+ | | -q, --quiet | ||
+ | |} | ||
+ | |||
+ | === 팁 === | ||
+ | {| class="wikitable" | ||
+ | !의도 | ||
+ | !방법 | ||
+ | !설명 | ||
+ | |- | ||
+ | |위 명령들을 파이썬 코드 안에서 실행. | ||
+ | |파이썬 코드로 라이브러리 설치, 삭제 등이 가능하다. | ||
+ | 코드 내에선 !를 맨 앞에 붙이고 터미널에서 사용하는 명령을 쓰면 된다. | ||
+ | |<syntaxhighlight lang="python"> | ||
+ | !pip install tensorflow==1.14 | ||
+ | </syntaxhighlight> | ||
|} | |} | ||
==사용법== | ==사용법== | ||
82번째 줄: | 148번째 줄: | ||
|모듈명을 쓰면 모듈의 경로를 알 수 있다. | |모듈명을 쓰면 모듈의 경로를 알 수 있다. | ||
| | | | ||
+ | |- | ||
+ | |형제모듈 불러오기 | ||
+ | |import 디렉토리.모듈명 | ||
+ | |같은 디렉토리의 모듈을 불러오기 위해선 같은 디렉토리부터 지정해주어야 한다. | ||
|- | |- | ||
|모듈에 정의된 함수, 변수 파악 | |모듈에 정의된 함수, 변수 파악 | ||
|dir(모듈명) | |dir(모듈명) | ||
| | | | ||
+ | |- | ||
+ | |상위 경로의 모듈 가져오기. | ||
+ | |import os, sys | ||
+ | sys.path.append('./') | ||
+ | |상위 디렉토리에서부터 하위로 경로를 탐색할 수 있다.(형제 디렉토리의 모듈을 사용할 수 있다.) | ||
|} | |} | ||
==팁== | ==팁== | ||
{| class="wikitable" | {| class="wikitable" | ||
− | |||
!자체변수 | !자체변수 | ||
!설명 | !설명 | ||
155번째 줄: | 229번째 줄: | ||
===엑셀 조작=== | ===엑셀 조작=== | ||
엑셀조작을 다음 라이브러리들을 이용해 개별적으로 직접 사용해도 되지만, 보통은 판다스를 이용해 데이터를 다룬다. | 엑셀조작을 다음 라이브러리들을 이용해 개별적으로 직접 사용해도 되지만, 보통은 판다스를 이용해 데이터를 다룬다. | ||
− | + | ||
− | + | 엑셀 조작을 위한 라이브러리들은 다음을 참고하자. [[:분류:엑셀 헨들링|분류:엑셀 헨들링]] | |
− | + | ||
− | | | + | 필요와 특성에 따라 사용하면 됨. |
− | |||
− | |||
− | |||
=패키지 만들기= | =패키지 만들기= | ||
187번째 줄: | 258번째 줄: | ||
|임포트한 모듈의 실제 파일 위치가 담겨있다. | |임포트한 모듈의 실제 파일 위치가 담겨있다. | ||
|} | |} | ||
+ | |||
+ | = 팁 = | ||
+ | 파이썬 버전에 따라 지원하지 않는 라이브러리가 있다. 그리고 OS에 따라 지원하지 않는 라이브러리가 있다. 이런 경우엔.... 진짜 해결하기 어려우니... 그냥 맘 접고 버전을 되돌리거나 다른 라이브러리를 사용하는 편이 좋다. | ||
+ | |||
+ | = 문제해결 = | ||
+ | |||
+ | === ERROR: Cannot uninstall 'pycurl'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall. === | ||
+ | pycurl 대신 다른 패키지명에도 해당하는 오류이다. 일반적으로 OS를 통해 따로 설치했을 경우에 나오는 듯한데, <code>pip install --ignore-installed pycurl</code> 처럼 ignore-installed 옵션을 주면 된다. | ||
+ | |||
+ | === ERROR: Could not install packages due to an OSError: [WinError 5] Access is denied: === | ||
+ | pip install update 따위에서 나오는 에러인데, 관리자 권한으로 실행하면 진행이 가능하다. | ||
+ | |||
+ | === because these package versions have conflicting dependencies. === | ||
+ | requirements.txt 따위를 이용해 패키지를 설치할 때 발생하는 에러. 텍스트파일에 명시된 버전과 다른 의존성 패키지에서 명시된 버전이 다른 경우. 다음과 같이 충돌하는 경우 상위버전을 사용하라고 명시하면 된다.(어떤 문제가 생길지도...모르지만;;;;) | ||
+ | |||
+ | <code>pip install --upgrade --no-deps --force-reinstall -r requirements.txt</code> | ||
+ | |||
+ | === WARNING: Ignoring invalid distribution -ip === | ||
+ | 보통 '-'로 시작하는 파일명 때문에 발생하는 에러. 위 경우엔 -ip. | ||
[[분류:기초]] | [[분류:기초]] |
2023년 12월 21일 (목) 17:51 기준 최신판
1 개요[편집 | 원본 편집]
파이썬 모듈이라고도 한다.(사용하는 용어가 애매하다. 일반적으로 라이브러리가 더 큰 개념이고, 라이브러리 안에 모듈이 있다고 이해하면 좋다.)
라이브러리, 패키지, 모듈. 어떻게 구분할 수 있을까?
이름 | 설명 |
---|---|
모듈 | 파일 하나. 파이썬의 경우, .py 파일을 보통 모듈이라 칭한다.
자주 사용하는 함수들을 파일로 작성한 것. |
패키지 | 모듈의 집함을 패키지라 부르기도 한다. 일반적으로 init.py를 포함한다. |
라이브러리 | 패키지와 많이 혼용된다.
도서관에 책이 많은 것에 비유되어 라이브러리라 한다. |
서브루틴, 함수들의 모음.
1.1 정의[편집 | 원본 편집]
.py 확장자를 갖는 파일을 모듈이라 하며, 이들을 특정 디렉토리에 모아둔 것을 패키지라 부른다. 그리고 모듈 혹은 패키지를 라이브러리라 부르기도 한다.
- 표준 라이브러리 : 설치 없이 import 가능한 것들.
- 외부 라이브러리 : 설치한 후 사용.
1.2 현재 설치된 라이브러리 확인[편집 | 원본 편집]
현재 설치된 라이브러리는 help('modules')로 확인 가능. help('모듈명')으로 상세설명을 볼 수 있다.
의도 | 방법 | 설명 |
---|---|---|
라이브러리 버전 확인 | pip show 라이브러리명 | 프롬프트에서 진행한다. |
1.3 모듈 설치 관련[편집 | 원본 편집]
pip을 사용한다.(Python Install Package의 약자.)
오픈소스 저장소에 있는 패키지를 관리하는 명령이다.
의도 | 방법 | 설명 |
---|---|---|
pip 업데이트 | python -m pip install --upgrade pip | 프롬프트에서 진행한다. |
모듈설치 | pip install 패키지명 | 패키지를 설치하면 파이썬의 site-packages에 패키지의 디렉터리가 생긴다.
(가상환경의 Lib 안에 있다.) |
버전을 지정해 설치 | pip install 패키지명==x.x | 과거 버전을 사용하고 싶을 때 특정 버전을 지정한다. |
모듈업그레이드 | pip install 패키지명 --upgrade | |
모듈 삭제 | pip uninstall 패키지명 | 해당 라이브러리를 지운다. |
1.4 이외 자주 사용하는 기능[편집 | 원본 편집]
의도 | 방법 | 설명 |
---|---|---|
설치된 라이브러리 표시 | pip list | 현재 가상환경에 설치된 라이브러리를 표시해준다. |
모듈 업데이트 | pip install --upgrade 모듈명
|
최신버전으로. |
모듈 버전 바꾸기 | pip install 모듈명==버전 | 기존에 설치된 것을 지우고 해당 버전을 설치한다. |
라이브러리 백업 | 설치한 패키지들에 대한 정보를 담는다. | pip freeze > requirements.txt |
라이브러리 백업 풀기 | 패키지들에 대한 정보를 토대로 그대로 설치한다. | pip install -r requirements.txt |
1.5 이외 옵션[편집 | 원본 편집]
의도 | 옵션 |
---|---|
출력 최소화 | -q, --quiet |
1.6 팁[편집 | 원본 편집]
의도 | 방법 | 설명 |
---|---|---|
위 명령들을 파이썬 코드 안에서 실행. | 파이썬 코드로 라이브러리 설치, 삭제 등이 가능하다.
코드 내에선 !를 맨 앞에 붙이고 터미널에서 사용하는 명령을 쓰면 된다. |
!pip install tensorflow==1.14
|
2 사용법[편집 | 원본 편집]
함수의 이름이 같으면 기존 함수를 덮어쓴다.
라이브러리 내의 함수를 사용하려면 모듈명.함수명()
형태로 사용한다.(모듈 내에 정의되어 있음을 알려주기 위해.
2.1 모듈사용[편집 | 원본 편집]
의도 | 방법 | 설명 |
---|---|---|
모듈 사용 | import 모듈명 | import는 모듈 자체를 불러오는 방식이다.
모듈 내의 함수는 다음과 같이 사용할 수 있다. 모듈명.함수명(변수)
|
form 모듈명 import * | from은 모듈의 함수(메서드)만을 불러오는 방식이다.
모듈 내의 모든 것을 불러온다. 모듈 이름 없이 내용을 이름 그대로 사용할 수 있다. 모듈 내의 함수를 이름 그대로 사용할 수 있지만, 기존 함수와 충돌할 수 있다. '*' 대신 함수명을 쓰면 해당 함수만 불러올 수 있다. | |
from .경로명 import 모듈명 | 상대경로방식. '.'으로 현재경로 안에 있는 파일임을 알려준다.
'.'은 현재경로, '..'은 상위경로를 의미한다. | |
import 모듈명 as 바꿀이름명 | 모듈명이 너무 긴 경우, 모듈의 이름을 바꾸어 임포트 할 수 있다. 모듈의 이름이 길 때 짧게 줄여 사용하기 위함.
바꿀이름명.함수명(변수) 형태로 이용 가능. | |
모듈 주소 파악 | 모듈명을 쓰면 모듈의 경로를 알 수 있다. | |
형제모듈 불러오기 | import 디렉토리.모듈명 | 같은 디렉토리의 모듈을 불러오기 위해선 같은 디렉토리부터 지정해주어야 한다. |
모듈에 정의된 함수, 변수 파악 | dir(모듈명) | |
상위 경로의 모듈 가져오기. | import os, sys
sys.path.append('./') |
상위 디렉토리에서부터 하위로 경로를 탐색할 수 있다.(형제 디렉토리의 모듈을 사용할 수 있다.) |
3 팁[편집 | 원본 편집]
자체변수 | 설명 | 예시 | |
---|---|---|---|
__name__ | 파이썬 파일이 직접 실행된 것인지, 다른 파일에서 임포트 된 것인지 판단하기 위한 용도.
자체실행이라면 __main__이 바인딩되고, 임포트된 경우엔 파일명이 바인딩된다. 일반적으로 모듈을 테스트하기 위한 용도로, 임포트 되었을 때엔 호출되지 않게 할 때 쓰인다. |
if __name__=="__main__":
print("잘 되는지 테스트")
|
|
4 라이브러리 종류[편집 | 원본 편집]
목차가 너무 길어질 듯해 앞으론 여기에 추가해 넣도록 하겠다.
4.1 기능[편집 | 원본 편집]
사용 | 라이브러리 | 설명 |
---|---|---|
성능 측정 | timeit | 어떤 방식이 성능에 유리할지 측정한다. |
변수 저장 | piclkle | 특정 객체(변수)의 값을 바이너리로 저장한다.(추후에 다시 사용하기 위해) |
사용 | 라이브러리 | 설명 |
---|---|---|
금융데이터 차트 | mplfinance | 금융 관련 차트를 그린다. |
이미지 관리 | pillow | 이미지 열기, 파일의 정보 따위를 열람할 수 있다. |
4.2 엑셀 조작[편집 | 원본 편집]
엑셀조작을 다음 라이브러리들을 이용해 개별적으로 직접 사용해도 되지만, 보통은 판다스를 이용해 데이터를 다룬다.
엑셀 조작을 위한 라이브러리들은 다음을 참고하자. 분류:엑셀 헨들링
필요와 특성에 따라 사용하면 됨.
5 패키지 만들기[편집 | 원본 편집]
디렉터리 안에 .py 파일을 넣는다.(디렉터리명이 패키지명이 된다.)
5.1 공통규약[편집 | 원본 편집]
5.1.1 파일 및 디렉토리[편집 | 원본 편집]
__init__.py | 이 파일이 있으면 파이썬은 해당 디렉터리를 패키지로 인식한다.(없어도 인식을 하긴 하나, 모든 기능을 다 활용할 순 없음) |
__pycache__ 디렉터리. | (가상환경 패키지를 설치했다면 가상환경 디렉토리 안에 생기는 듯.)
패키지를 임포트하는 순간 생기는 디렉터리. 이 안에 .pyc 파일이 생긴다.(다음번에 임포트할 때 컴파일 작업을 생략해 속도를 올리기 위함.) |
5.1.2 메서드[편집 | 원본 편집]
__file__ | 임포트한 모듈의 실제 파일 위치가 담겨있다. |
6 팁[편집 | 원본 편집]
파이썬 버전에 따라 지원하지 않는 라이브러리가 있다. 그리고 OS에 따라 지원하지 않는 라이브러리가 있다. 이런 경우엔.... 진짜 해결하기 어려우니... 그냥 맘 접고 버전을 되돌리거나 다른 라이브러리를 사용하는 편이 좋다.
7 문제해결[편집 | 원본 편집]
7.1 ERROR: Cannot uninstall 'pycurl'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.[편집 | 원본 편집]
pycurl 대신 다른 패키지명에도 해당하는 오류이다. 일반적으로 OS를 통해 따로 설치했을 경우에 나오는 듯한데, pip install --ignore-installed pycurl
처럼 ignore-installed 옵션을 주면 된다.
7.2 ERROR: Could not install packages due to an OSError: [WinError 5] Access is denied:[편집 | 원본 편집]
pip install update 따위에서 나오는 에러인데, 관리자 권한으로 실행하면 진행이 가능하다.
7.3 because these package versions have conflicting dependencies.[편집 | 원본 편집]
requirements.txt 따위를 이용해 패키지를 설치할 때 발생하는 에러. 텍스트파일에 명시된 버전과 다른 의존성 패키지에서 명시된 버전이 다른 경우. 다음과 같이 충돌하는 경우 상위버전을 사용하라고 명시하면 된다.(어떤 문제가 생길지도...모르지만;;;;)
pip install --upgrade --no-deps --force-reinstall -r requirements.txt
7.4 WARNING: Ignoring invalid distribution -ip[편집 | 원본 편집]
보통 '-'로 시작하는 파일명 때문에 발생하는 에러. 위 경우엔 -ip.