모든 프로그래밍 요구를위한 12 개의 Python

소프트웨어 개발을 위해 Python을 선택할 때 모든 프로그래밍 요구 사항을 충족하는 다양한 패키지가 포함 된 대규모 언어 에코 시스템을 선택하게됩니다. 그러나 GUI 개발에서 머신 러닝에 이르기까지 모든 것을위한 라이브러리 외에도 여러 Python 런타임에서 선택할 수 있으며 이러한 런타임 중 일부는 다른 것보다 현재 사용중인 사용 사례에 더 적합 할 수 있습니다.

다음은 표준 구현 (CPython)에서 속도에 최적화 된 버전 (PyPy), 특수 사용 사례 (Anaconda, ActivePython), 다른 언어 런타임 (Jython, IronPython), 심지어 절단을위한 Python 배포에 대한 간략한 설명입니다. 가장자리 실험 (PyCopy, MesaPy).

CPython

CPython은 다른 모든 Python 화신이 찾는 표준 버전 인 Python의 참조 구현입니다. CPython은 이름에서 알 수 있듯이 C로 작성되었으며 Python 언어에 대한 모든 최상위 결정을 담당하는 동일한 핵심 그룹에 의해 생성됩니다.

CPython 사용 사례

CPython은 Python의 참조 구현이므로 최적화 측면에서 가장 보수적입니다. 이것은 의도적으로 설계된 것입니다. Python의 유지 관리자는 CPython이 가장 광범위하게 호환되고 표준화 된 Python 구현이되기를 원합니다.

CPython은 Python 표준에 대한 호환성 및 적합성이 원시 성능 및 기타 문제보다 더 중요한 경우 최선의 선택입니다. CPython은 또한 Python의 가장 근본적인 화신으로 작업하고자하고 특정 편의를 기꺼이 포기하려는 전문가에게 유용합니다. 

예를 들어, CPython을 사용하면 가상 환경을 설정하기 위해 조금 더 많은 작업을 수행해야합니다. 다른 배포판 (특히 Anaconda)은 작업 공간 설정과 관련하여 더 많은 자동화를 제공합니다.

CPython 제한

CPython에는 다른 Python 버전에서 볼 수있는 성능 최적화 기능이 없습니다. 네이티브 JIT (Just-In-Time) 컴파일러, 가속화 된 수학 라이브러리 및 성능을위한 타사 추가 기능이 없습니다. 이것들은 모두 여러분이 직접 추가 할 수 있지만 번들로 제공되지는 않습니다. 다시 말하지만,이 모든 것은 최대의 호환성을 보장하고 CPython이 참조 구현으로 사용할 수 있도록 설계되었지만 성능 최적화는 개발자의 몫입니다.

또한 CPython은 Python 작업을위한 기본 도구 집합 만 제공합니다. 예를 들어 pip 패키지 관리자는 Python의 기본 PyPI 패키지 저장소에서 패키지를 가져 와서 설치합니다. Pip은 개발자가 제공하는 경우 사전 컴파일 된 바이너리 (휠 배포 형식을 통해)도 설치하지만 패키지가 PyPI 외부 에 있을 수있는 종속성은 설치하지 않습니다 . 

관련 비디오 : Python이 프로그래밍을 더 쉽게 만드는 방법

IT에 완벽한 Python은 시스템 자동화에서 기계 학습과 같은 최첨단 분야에서의 작업에 이르기까지 다양한 종류의 작업을 단순화합니다.

아나콘다 파이썬

Anaconda, Inc. (이전의 Continuum Analytics)에서 제작 한 Anaconda는 상업용 제공 업체의 지원을 받고 기업을위한 지원 계획이있는 배포가 필요한 Python 개발자를 위해 설계되었습니다. Anaconda Python의 주요 사용 사례는 수학, 통계, 엔지니어링, 데이터 분석, 기계 학습 및 관련 응용 프로그램입니다.

Anaconda Python 사용 사례

Anaconda는 상용 및 과학 Python 작업에 사용되는 가장 일반적인 라이브러리 (SciPy, NumPy, Numba 등)를 번들로 제공하며 사용자 지정 패키지 관리 시스템을 통해 더 많은 라이브러리에 액세스 할 수 있도록합니다.

Anaconda는 이러한 모든 부분을 통합하는 방식에서 다른 배포판과 차별화됩니다. Anaconda가 설치되면 편리한 GUI를 통해 Anaconda 환경의 모든 측면을 사용할 수있는 데스크톱 앱인 Anaconda Navigator를 제공합니다. CPython을 사용하는 것보다 Anaconda를 사용하면 구성 요소를 찾고, 최신 상태로 유지하고, 작업하는 것이 훨씬 쉽습니다.

또 다른 장점은 Anaconda가 특정 패키지에 필요한 경우 Python 에코 시스템 외부의 구성 요소를 처리하는 방식입니다. condaAnaconda 용으로 특별히 생성 된 패키지 관리자는 Python 패키지 및 타사 외부 소프트웨어 요구 사항 설치를 모두 처리합니다.

Anaconda Python 제한

Anaconda에는 유용한 라이브러리가 너무 많고 몇 번의 키 입력만으로 더 많은 것을 설치할 수 있기 때문에 Anaconda 설치의 크기는 CPython보다 훨씬 클 수 있습니다. 기본 CPython 설치는 약 100MB로 실행됩니다. Anaconda 설치는 크기가 기가 바이트까지 늘어날 수 있습니다. 이는 리소스 제약이있는 상황에서 문제가 될 수 있습니다.

Anaconda의 설치 공간을 줄이는 한 가지 방법은 설치 및 실행에 필요한 최소한의 조각 만 포함하는 Anaconda의 제거 된 버전 인 Miniconda를 설치하는 것입니다. 그런 다음 각 부품이 소비하는 공간을 고려하여 적합하다고 판단되면 Miniconda에 패키지를 추가 할 수 있습니다.

ActivePython

Anaconda와 마찬가지로 ActivePython은 영리 기업 (이 경우 ActiveState)에서 만들고 유지 관리합니다.이 회사는 다국어 Komodo IDE와 함께 여러 언어 런타임을 판매합니다.

ActivePython 사용 사례

ActivePython은 Python을 사용하고 싶지만 Python 설치를 조립하고 관리하는 데 많은 노력을 기울이고 싶지 않은 엔터프라이즈 사용자 및 데이터 과학자를 대상으로합니다. ActivePython은 Python의 일반 pip패키지 관리자를 사용하지만 인텔 수학 커널 라이브러리와 같은 타사 종속성이있는 일부 공통 라이브러리와 함께 확인 된 팩인으로 수백 개의 공통 라이브러리도 제공합니다.

ActivePython 제한

외부 종속성이있는 패키지를 처리하는 ActivePython의 접근 방식에는 한 가지 잠재적 인 단점이 있습니다. 복잡한 종속성 (예 : TensorFlow)이있는 프로젝트의 최신 버전으로 업그레이드하려면 ActivePython 설치도 업그레이드해야합니다. 개발이 프로젝트의 특정 버전에 연결되는 경향이있는 환경에서는 문제가되지 않습니다. 그러나 개발이 최신 버전을 추적하는 경향이있는 환경에서는 문제가 발생할 수 있습니다.

파이 파이

CPython 인터프리터의 드롭 인 대체품 인 PyPy는 JIT (Just-In-Time) 컴파일을 사용하여 Python 프로그램의 실행 속도를 높입니다. 수행중인 작업에 따라 성능이 크게 향상 될 수 있습니다. 

PyPy 사용 사례

일반적으로 Python, 특히 CPython에 대한 일반적인 불만은 속도입니다. 기본적으로 Python은 C보다 몇 배 느리게 실행되며 때로는 수백 배 느립니다. PyPy JIT는 Python 코드를 기계어로 컴파일하여 CPython보다 평균 7.7 배 빠른 속도를 제공합니다. 일부 작업은 최대 50 배 더 빠르게 실행됩니다. 

가장 좋은 점은 개발자가 이러한 이점을 얻기 위해 노력할 필요가 거의 없다는 것입니다. CPython을 PyPy로 바꾸면 대부분 완료됩니다.

PyPy 제한

PyPy는 항상 "순수한"Python 애플리케이션에서 최고의 성능을 발휘했습니다. NumPy와 같은 C 라이브러리와 인터페이스하는 Python 패키지는 PyPy가 CPython의 기본 바이너리 인터페이스를 에뮬레이션 한 방식으로 인해 잘 진행되지 않았습니다. 그러나 시간이 지남에 따라 PyPy의 개발자는이 문제를 해결하고 PyPy를 C 확장에 의존하는 대부분의 Python 패키지와 훨씬 더 호환되도록 만들었습니다. 요컨대, C 확장에 대한 지원은 여전히 ​​제한적이지만 예전보다 훨씬 적습니다.

PyPy의 또 다른 가능한 단점은 런타임의 크기입니다. 표준 라이브러리를 제외한 Windows의 핵심 CPython 런타임은 약 4MB이고 PyPy 런타임은 약 32MB입니다. PyPy는 오랫동안 Python의 2.x 브랜치를 강조해 왔기 때문에 예를 들어 Python 3.x 용 PyPy는 현재 32 비트 베타 테스트 버전의 Windows에서만 사용할 수 있습니다. (PyPy는 Linux 및 MacOS 용 Python 2.x 및 3.x 용 64 비트 버전에서 사용할 수 있습니다.)

자이 썬

JVM (Java Virtual Machine)은 Java 외에도 많은 언어에 대한 런타임 역할을합니다. 긴 목록에는 Groovy, Scala, Clojure, Kotlin 및 Jython 프로젝트를 통한 Python이 포함됩니다.

Jython 사용 사례

Jython은 Python 2.x 코드를 JVM 바이트 코드로 컴파일하고 결과 프로그램을 JVM에서 실행합니다. 어떤 경우에는 Jython으로 컴파일 된 프로그램이 CPython 대응 프로그램보다 빠르게 실행되지만 항상 그런 것은 아닙니다.

Jython이 제공하는 가장 큰 장점은 나머지 Java 에코 시스템과의 직접적인 상호 운용성입니다. Java는 Python보다 훨씬 더 널리 사용됩니다. JVM에서 Python을 실행하면 Python 개발자는 다른 방법으로는 사용할 수없는 방대한 라이브러리 및 프레임 워크 에코 시스템을 활용할 수 있습니다. 마찬가지로 Jython은 Java 개발자가 Python 라이브러리를 사용할 수 있도록합니다. 

자이 썬 제한

Jython의 가장 큰 단점은 Python의 2.x 브랜치 만 지원한다는 것입니다. Python 3.x에 대한 지원은 개발 중이지만 얼마 동안 지원되었습니다. 지금까지 아무것도 공개되지 않았습니다.

Jython은 Python을 JVM으로 가져 오지만 Python을 Android로 가져 오지는 않습니다. 현재 안드로이드에 대한 자이 썬 포트가 없기 때문에 자이 썬은 안드로이드 애플리케이션 개발에 사용할 수 없습니다.

IronPython

Jython이 JVM에서 Python을 구현 한 것처럼 IronPython은 .Net 런타임 또는 CLR (공용 언어 런타임)에서 Python을 구현 한 것입니다. IronPython은 CLR의 DLR (Dynamic Language Runtime)을 사용하여 Python 프로그램이 CPython에서와 동일한 수준의 역 동성으로 실행될 수 있도록합니다.

IronPython 사용 사례

Jython과 마찬가지로 IronPython은 다리입니다. 가장 큰 사용 사례는 Python과 .Net 유니버스 간의 상호 운용성입니다. 기존 .Net 어셈블리는 Python의 기본 가져 오기 및 객체 조작 구문을 사용하여 IronPython 프로그램에로드 할 수 있습니다. IronPython 코드를 어셈블리로 컴파일하고있는 그대로 실행하거나 다른 언어에서 호출 할 수도 있습니다. 그러나 어셈블리의 MSIL (Microsoft Intermediate Language)은 공용 언어 사양을 준수하지 않기 때문에 다른 .Net 언어에서 직접 액세스 할 수 없습니다.

IronPython 제한

Jython과 마찬가지로 IronPython은 현재 Python 2.x 만 지원합니다. 그러나 IronPython 3.x 구현을 만드는 작업이 진행 중입니다.

WinPython

이름에서 알 수 있듯이 WinPython은 Microsoft Windows 사용자를 위해 특별히 만들어진 Python 배포판입니다. CPython의 이전 Windows 용 에디션은 제대로 설계되지 않았으며 Windows 사용자가 Python 에코 시스템을 최대한 활용하기가 어려웠습니다. CPython의 Windows 에디션은 시간이 지남에 따라 개선되었지만 WinPython은 여전히 ​​CPython에서 찾을 수없는 많은 기능을 제공합니다.

WinPython 사용 사례

WinPython의 주요 매력은 Python의 독립 버전이라는 것입니다. 실행되는 컴퓨터에 설치할 필요는 없습니다. 디렉토리에 압축을 풀면됩니다. 따라서 WinPython은 주어진 시스템에 소프트웨어를 설치할 수없는 경우, 미리 구성된 Python 런타임을 응용 프로그램과 함께 배포해야하는 경우 또는 여러 버전의 Python을 나란히 실행해야하는 경우에 유용합니다. 서로 간섭하지 않고

WinPython은 또한 NumPy, Pandas, SciPy, Matplotlib 등 다양한 데이터 과학 지향 패키지를 번들로 제공하므로 추가 설치 단계없이 바로 사용할 수 있습니다. 또한 C / C ++ 컴파일러도 포함되어 있습니다. 많은 Windows 시스템에는 포함되어 있지 않고 많은 Python 확장에서이를 필요로하거나 사용할 수 있기 때문입니다.

WinPython 제한 사항

WinPython의 한 가지 제한은 일부 사용 사례에서 기본적으로 너무 많이 포함 할 수 있다는 것입니다. 이를 해결하기 위해 WinPython의 제작자는 제품의 가능한 최소한의 설치 만 포함하는 각 WinPython 에디션의 "제로"버전을 제공합니다. 나중에 Python의 자체 pip도구 또는 WinPython의 WPPM 유틸리티를 사용하여 더 많은 패키지를 추가 할 수 있습니다 .

Python Portable

Python Portable은 자체 포함 된 패키지의 CPython 런타임입니다. 유사하게 자체 포함 된 애플리케이션의 PortableDevApps 컬렉션이 제공됩니다.

Python Portable 사용 사례

WinPython과 마찬가지로 Python Portable에는 과학 컴퓨팅을위한 다양한 패키지 (Matplotlib, Numba, SymPy, SciPy, Cython 등)가 포함되어 있습니다. 또한 WinPython과 마찬가지로 Python Portable은 Windows 호스트에 공식적으로 설치할 필요없이 실행됩니다. 모든 디렉토리 또는 이동식 드라이브에있을 수 있습니다. 또한 Spyder IDE 및 Python의 pip 패키지 관리자가 포함되어 있으므로 필요에 따라 패키지를 추가, 변경 또는 제거 할 수 있습니다.

Python Portable 제한 사항

WinPython과 달리 Python Portable에는 C / C ++ 컴파일러가 포함되어 있지 않습니다. Cython으로 작성된 코드를 사용하려면 C 컴파일러를 제공해야합니다 (따라서 C로 컴파일 됨).

실험적 Python 배포

이러한 배포판은 Python을 완전히 새로운 것을위한 시작점으로 사용하거나 표준 Python을 전략적으로 변경하고 있기 때문에 Python을 크게 변경합니다. 전반적으로 이러한 Python은 아직 프로덕션 용도로 권장되지 않습니다. 

가까운 미래를 위해 Python 2.x 코드베이스를 사용하고 있다면 Python 2.x를 유지하는 실험적인 Python 배포에 대한 기사를 확인하는 것이 좋습니다.

MicroPython

MicroPython은 마이크로 컨트롤러와 같은 초저가 하드웨어에서 실행할 수있는 Python 언어의 최소 하위 집합을 제공합니다. MicroPython은 몇 가지 차이점을 제외하고 Python 3.4를 구현합니다. Python을 알고 있다면 MicroPython 코드를 작성하는 것은 쉽지만 기존 코드는있는 그대로 실행되지 않을 수 있습니다.

파이 카피