모든 Python 개발자를위한 24 개의 Python 라이브러리

Python 프로그래밍 언어의 엄청난 성공에 대한 좋은 이유를 원하십니까? Python에 사용할 수있는 대규모 라이브러리 모음 (네이티브 및 타사 라이브러리 모두) 이상을 보지 마십시오. 하지만 Python 라이브러리가 너무 많기 때문에 일부 라이브러리가 가치있는 모든 관심을받지 못하는 것은 놀라운 일이 아닙니다. 또한 한 도메인에서만 작업하는 프로그래머는 다른 종류의 작업에 사용할 수있는 장점에 대해 항상 알지 못합니다.

간과했을 수도 있지만 주목할만한 가치가있는 24 개의 Python 라이브러리가 있습니다. 이러한 gem은 파일 시스템 액세스, 데이터베이스 프로그래밍, 클라우드 서비스 작업에서 경량 웹 앱 빌드, GUI 생성, 이미지, 전자 책 및 Word 파일 작업에 이르기까지 모든 것을 단순화하여 다양한 유용성을 실행합니다. 일부는 잘 알려져 있고 다른 일부는 잘 알려지지 않았지만 이러한 Python 라이브러리는 모두 도구 상자에 있어야합니다.

Apache Libcloud

Libcloud의 기능 : 일관된 단일 통합 API를 통해 여러 클라우드 공급자에 액세스합니다.

Libcloud를 사용하는 이유 : Apache Libcloud에 대한 위의 설명으로 인해 손뼉을 치지 못한다면 다중 클라우드 작업을 시도하지 않은 것입니다. 클라우드 제공 업체는 모두 자신의 방식으로 작업하는 것을 좋아하여 수십 개의 제공 업체를 처리하기위한 통합 메커니즘을 만들어 시간을 크게 절약하고 두통을 진정시킵니다. API는 컴퓨팅, 스토리지,로드 밸런싱 및 DNS에 사용할 수 있으며 Python 2.x 및 Python 3.x와 Python 용 성능 향상 JIT 컴파일러 인 PyPy를 지원합니다.

화살

Arrow가하는 일 : Python에서 날짜와 시간을 더 깔끔하게 처리합니다.

Arrow를 사용하는 이유 : 시간대, 날짜 변환, 날짜 형식 및 나머지 모든 작업은 이미 골칫거리입니다. 날짜 / 시간 작업을 위해 Python의 표준 라이브러리를 사용하면 두 번의 골칫거리가됩니다.

Arrow는 네 가지 큰 장점을 제공합니다. 첫째, Arrow는 Python의 datetime 모듈을 대체하는 드롭 인으로, 일반적인 함수 호출이 예상대로 작동 .now()하고 .utcnow()작동 함을 의미합니다 . 둘째, Arrow는 시간대 변경 및 변환과 같은 일반적인 요구 사항에 대한 방법을 제공합니다. 셋째, Arrow는 "인간화 된"날짜 / 시간 정보를 제공합니다. 예를 들어 "한 시간 전에"일어난 일이나 많은 노력없이 "2 시간 후에"일어날 것이라고 말할 수 있습니다. 넷째, Arrow는 땀을 흘리지 않고 날짜 / 시간 정보를 현지화 할 수 있습니다.

보다

Behold의 기능 :  Python에서 인쇄 스타일 디버깅을 강력하게 지원합니다.

Behold를 사용하는 이유 :  Python 또는 거의 모든 프로그래밍 언어에서 디버깅하는 간단한 방법이 있습니다 print. 인라인 문을 삽입 합니다. 그러나 인쇄 디버깅은 작은 프로그램에서는 당연한 일이지만 대규모의 대규모 다중 모듈 프로젝트에서 유용한 결과를 얻는 것은 그리 쉽지 않습니다.

Behold는 print 문을 통해 상황 별 디버깅을위한 툴킷을 제공합니다. 이를 통해 출력에 균일 한 모양을 적용하고 결과에 태그를 지정하여 검색 또는 필터를 통해 정렬 할 수 있으며 모듈간에 컨텍스트를 제공하여 한 모듈에서 시작된 함수를 다른 모듈에서 올바르게 디버깅 할 수 있습니다. Behold는 객체의 내부 사전 인쇄, 중첩 된 속성 공개, 디버깅 프로세스 중 다른 지점에서의 비교를 위해 결과 저장 및 재사용과 같은 많은 일반적인 Python 관련 시나리오를 처리합니다.

검정

Black의 기능 : 엄격하고 거의 완전히 변경할 수없는 규칙 집합에 따라 Python 코드 형식을 지정합니다.

Black을 사용하는 이유 :  YAPF와 같은 Python 코드 포맷터에는 줄 길이, 줄 분할 옵션, 후행 쉼표 처리 등과 같은 구성 가능한 옵션이 많이 있습니다. 검은 색은 변경할 수없는 규칙에 대해 일관된 기본값 집합을 적용합니다. 결과적으로 형식화 된 코드는 코드베이스와 사용자간에 가능한 한 일관성이 있으며 편집 된 파일간에 가능한 차이는 최소화됩니다.

특히 세로 공백, 깊은 중첩이있는 문 (예 : 목록 내 목록) 및 기타 서식 옵션에 대해 까다로울 경우 검정에 익숙해집니다. 그러나 장기적으로는 형식화에 대해 생각할 필요가 없으므로 코드에 집중할 수 있습니다.

Bottle의 기능 : 가볍고 빠른 웹 앱.

Bottle을 사용하는 이유 : 빠른 RESTful API를 함께 사용하거나 웹 프레임 워크의 기본을 사용하여 앱을 빌드하고 싶을 때 가능하지만 작은 Bottle은 필요한 것 이상을 제공하지 않습니다. 라우팅, 템플릿, 요청 및 응답 데이터에 대한 액세스, 일반 이전 CGI의 여러 서버 유형 지원, WebSockets와 같은 고급 기능 지원 등이 모두 여기에 있습니다. 시작하는 데 필요한 작업량도 마찬가지로 최소화되며보다 고급 기능이 필요할 때 Bottle의 디자인을 우아하게 확장 할 수 있습니다. 

딸깍 하는 소리

Click의 기능 :  Python 앱용 명령 줄 인터페이스를 빠르게 구축 할 수 있습니다.

Click을 사용하는 이유 :  GUI는 편리하지만 CLI는 진정한 힘이있는 곳입니다. 그러나 강력한 CLI를 구축하는 것은 쉽지 않으며 Python에서 명령 줄 옵션을 수집하고 사용하기위한 기본 도구 집합은 원시적입니다.

Click은 이러한 비트와 조각을 높은 수준의 CLI 구성 API로 래핑합니다. 몇 가지 기본 명령을 작성하려는 경우 몇 줄의 코드로 수행 할 수 있습니다. 매개 변수에 대한 추가 정보를 별도로 요청하거나 환경 변수에서 값을 가져 오는 것과 같은 고급 동작을 원하는 경우 Click이 다룹니다. Click은 colorama 라이브러리 를 통해 터미널 색상도 지원하며  타사 플러그인으로 확장 할 수 있습니다.

EbookLib

EbookLib의 기능 :  .epub 파일을 읽고 씁니다.

EbookLib를 사용하는 이유 : ebook을 만들려면 일반적으로 하나 이상의 명령 줄 도구를 랭 글링  해야합니다. EbookLib는 프로세스를 단순화하는 관리 도구와 API를 제공합니다. 개발중인 Kindle 지원과 함께 EPUB 2 및 EPUB 3 파일과 함께 작동합니다.

이미지와 텍스트 (후자는 HTML 형식)를 제공하면 EbookLib는 이러한 부분을 장, 중첩 된 목차, 이미지, HTML 마크 업 등으로 완성 된 ebook으로 조합 할 수 있습니다. 표지, 척추 및 스타일 시트 데이터도 모두 지원됩니다. 플러그인 시스템을 사용하면 타사에서 라이브러리의 동작을 확장 할 수 있습니다.

EbookLib이 제공하는 모든 것이 필요하지 않다면 Mkepub를 사용해보세요. Mkepub는 크기가 몇 킬로바이트에 불과한 라이브러리에 기본적인 전자 책 어셈블리 기능을 포함합니다. Mkepub의 한 가지 사소한 단점은 Jinja2가 필요하고 MarkupSafe 라이브러리가 필요하다는 것입니다.

구이

Gooey의 역할 :  콘솔 기반 Python 프로그램에 플랫폼 기반 GUI를 제공합니다.

Gooey를 사용하는 이유 :  사용자, 특히 랭크 및 파일 사용자에게 명령 줄 인터페이스를 제공하는 것은 애플리케이션 사용을 억제하는 가장 좋은 방법 중 하나입니다. 어떤 옵션을 어떤 순서로 전달할지 알아내는 것과 같은 하드 코어 괴짜와는 거의 다릅니다. Gooey는 argparse 라이브러리에서 예상하는 인수를 가져 와서 WxPython 라이브러리를 통해 GUI 형식으로 사용자에게 제공합니다. 모든 옵션은 레이블이 지정되고 적절한 컨트롤 (예 : 다중 옵션 인수에 대한 드롭 다운)과 함께 표시됩니다. 이미 argparse를 사용하고 있다는 가정하에 추가 코딩 (단일 포함 및 단일 데코레이터)이 작동하도록하기 위해 필요합니다.

호출

Invoke의 기능 : Pythonic 원격 실행 – 즉, Python 라이브러리를 사용하여 관리 작업을 수행합니다.

Invoke를 사용하는 이유 : 일반적인 쉘 스크립팅 작업 대신 Python을 사용하는 것이 합리적입니다. Invoke는 셸 명령을 실행하고 마치 Python 함수 인 것처럼 명령 줄 작업을 관리하기위한 고수준 API를 제공하므로 이러한 작업을 자신의 코드에 포함하거나 그 주위에서 우아하게 빌드 할 수 있습니다. 신뢰할 수없는 입력이있는 그대로 모든 쉘 명령에 전달되지 않도록주의하십시오.

Nuitka

Nuitka의 기능 :  Python을 자체 포함 된 C 실행 파일로 컴파일합니다.

Nuitka를 사용하는 이유 :  Cython과 마찬가지로 Nuitka는 Python을 C로 컴파일합니다. 그러나 Cython은 최상의 결과를 위해 자체 사용자 지정 구문이 필요하고 주로 수학 및 통계 응용 프로그램에 초점을 맞추고 있지만 Nuitka는 모든 Python 프로그램을있는 그대로 작동하고 C로 컴파일합니다. 단일 파일 실행 파일을 생성하여 진행할 수있는 곳에 최적화를 적용합니다. Nuitka는 아직 초기 단계에 있으며 계획된 많은 최적화 작업이 아직 진행 중입니다. 그럼에도 불구하고 Python 스크립트를 빠른 명령 줄 앱으로 바꾸는 편리한 방법입니다.

Numba

Numba의 기능 선택적으로 수학 집약적 인 기능의 속도를 높입니다.

Numba를 사용하는 이유 :  Python 세계에는 수학 연산을 가속화하기위한 패키지의 전체 하위 문화가 포함됩니다. 예를 들어 NumPy는 Python 인터페이스에서 고속 C 라이브러리를 래핑하여 작동하며 Cython은 가속화 된 성능을 위해 선택적 입력을 사용하여 Python을 C로 컴파일합니다. 그러나 Numba는 가장 편리합니다. 파이썬 함수를 데코레이터만으로 선택적으로 가속화 할 수 있기 때문입니다. 추가 속도 향상을 위해 일반적인 Python 관용구를 사용하여 워크로드를 병렬화하거나 SIMD 또는 GPU 명령어를 사용할 수 있습니다.

Numba와 함께 NumPy를 사용할 수 있습니다. 결국 NumPy에는 처음부터 구현할 필요가없는 많은 기본 알고리즘이 있습니다. 그러나 작은 "커널"알고리즘의 경우 Numba는 많은 경우에 NumPy보다 성능이 여러 번 뛰어납니다.

Openpyxl

Openpyxl의 기능 :  Excel 파일을 읽고, 쓰고, 조작합니다.

OpenPyxl을 사용하는 이유 : 숫자 분석가  가 작업에 사용하는 세 가지 도구의 이름을 누군가에게 물어보세요 . Python, R 및 Excel이 반드시 그 순서가 아닐 수도 있습니다. Excel에는 (아직) 기본 Python 연결이 없지만 타사 패키지는 다양한 방식으로 격차를 해소했습니다.

Openpyxl은  Excel을 직접 조작하는 대신 Excel 파일 을 수정하여 작동  합니다. Openpyxl을 사용하면 스프레드 시트 및 통합 문서 생성을 자동화하고, 수식을 생성하고, 이러한 수식으로 셀을 채우고, 기타 여러 작업을 수행 할 수 있습니다. 셀 스타일 및 조건부 서식과 같은 Excel 개체의 속성을 변경할 수도 있습니다. 스프레드 시트를 보는 데 상당한 시간을 소비하는 사람은 여기에서 유용한 정보를 찾을 수 있습니다.

피위

Peewee의 기능 :  SQLite, MySQL 및 PostgreSQL을 지원하는 작은 ORM (객체 관계형 매퍼)이며 많은 확장 기능이 있습니다.

Peewee를 사용하는 이유 :  모든 사람이 ORM을 좋아하는 것은 아닙니다. 일부는 데이터베이스 측에 스키마 모델링을 남겨두고 완료됩니다. 그러나 데이터베이스를 만지기를 원하지 않는 개발자에게는 잘 구성되고 눈에 잘 띄지 않는 ORM이 신의 선물이 될 수 있습니다. 그리고 SQL Alchemy만큼 완전한 ORM을 원하지 않는 개발자에게 Peewee는 매우 적합합니다.

Peewee 모델은 구성, 연결 및 조작이 쉽습니다. 또한 페이지 매김과 같은 많은 일반적인 쿼리 조작 기능이 바로 내장되어 있습니다. 다른 데이터베이스, 테스트 도구 및 스키마 마이그레이션 시스템에 대한 확장을 포함하여 추가 기능으로 더 많은 기능을 사용할 수 있습니다. ORM을 싫어하는 사람도 배울 수있는 기능입니다. 사랑. Peewee 3.x 브랜치 (권장 버전)는 이전 버전의 Peewee와 완전히 역 호환되지 않습니다.

베개

Pillow의 기능 :  고통없는 이미지 처리.

Pillow를 사용하는 이유 :  이미지 처리를 수행 한 대부분의 Pythonistas는 PIL (Python Imaging Library)에 익숙해야하지만 PIL은 단점과 한계로 가득 차 있으며 자주 업데이트되지 않습니다. Pillow는  최소한의 변경을 통해 사용하기 쉽고 PIL 코드 호환이되는 것을 목표로합니다 . 네이티브 Windows 이미징 기능과 Python의 Tcl / Tk 지원 Tkinter GUI 패키지와의 통신을위한 확장이 포함되어 있습니다. Pillow는 GitHub 또는 PyPI 저장소를 통해 사용할 수 있습니다.

Poetry의 기능 :  Python 프로젝트의 종속성 및 패키징을 높은 수준의 방식으로 관리합니다.

Poetry를 사용하는 이유 :  이론적으로는 빈 디렉토리를 만들고 .py 파일로 채우는 것 외에는 새로운 Python 프로젝트를 시작하기 위해 아무것도 할 필요가 없습니다. 실제로, 특히 야심 찬 프로젝트의 경우 README를 만들고, 폴더 구조를 설정하고, 종속성을 선언하는 등 훨씬 더 많은 작업을 수행해야합니다. 이 모든 것을 손으로하는 것은 골치 아픈 일입니다.

Poetry는 이러한 설정 및 유지 관리의 대부분을 자동화합니다. 실행 poetry new 하여 기본 구성 요소로 미리 채워진 새 프로젝트 디렉터리 및 가상 환경을 만듭니다. Python 고유의 pyprojec.toml 파일 형식을 사용하여 종속성을 선언하면 Poetry가이를 관리합니다. 기존 Poetry 관리 제품은 Poetry의 명령 줄에서 자동으로 설치, 새로 고침 및 수정되는 종속성을 가질 수 있습니다. Poetry는 원격 저장소 (예 : PyPI)에 대한 게시도 처리합니다.

PyFilesystem

PyFilesystem의 기능 :  모든 파일 시스템- 모든  파일 시스템에 대한 Pythonic 인터페이스  .

PyFilesystem을 사용하는 이유 : PyFilesystem  의 기본 아이디어는 더 이상 간단 할 수 없습니다. Python의 file객체가 단일 파일을 추상화하는 것처럼 PyFilesystem의 FS객체는 전체 파일 시스템을 추상화합니다. 이것은 온 디스크 파일 시스템만을 의미하는 것도 아닙니다. PyFilesystem은 또한 FTP 디렉터리, 메모리 내 파일 시스템, OS에서 정의한 위치 (예 : 사용자 디렉터리)에 대한 파일 시스템 및 서로 겹쳐진 위의 조합을 지원합니다.

파일을 조작하는 크로스 플랫폼 코드를 더 쉽게 작성할 수있을뿐만 아니라, PyFilesystem은 주로  os 및  io. 또한 파일 시스템의 콘솔 친화적 인 트리보기를 인쇄하기위한 도구와 같이 처음부터 만들어야하는 유틸리티도 제공합니다.

파이 게임

Pygame의 기능 :  Python으로 비디오 게임 또는 게임 품질의 프런트 엔드를 만듭니다.