더 이상이 답변을 업데이트하지 않습니다. 개인 사이트 http://python-notes.curiousefficiency.org/en/latest/python3/questions_and_answers.html 에 훨씬 더 긴 Python 3 Q & A가 있습니다 .
이전 답변 :
(상태 업데이트, 2012 년 9 월)
우리 (Python 핵심 개발자)는 Python 3.0이 출시되었을 때 3.x가 2.x 시리즈보다 새로운 프로젝트의 "기본"선택이되기까지 약 5 년이 걸릴 것이라고 예측했습니다. 이 예측은 2.7 릴리스의 계획된 유지 보수 기간이 너무 긴 이유입니다.
원래 Python 3.0 릴리스는 대부분의 실제 용도로는 효과적으로 사용할 수없는 IO 성능 저하와 관련하여 몇 가지 중요한 문제가있는 것으로 나타났습니다. 따라서 2009 년 6 월 말에 Python 3.1 릴리스부터 타임 라인을 시작하는 것이 더 합리적입니다. IO 성능 문제는 3.0.z 유지 보수 릴리스가없는 이유이기도합니다. 3.1로 업그레이드하는 대신 3.0을 사용하려는 이유는 없습니다.
글을 쓰는 시점 (2012 년 9 월)은 현재 전환 과정에 3 년이 조금 넘는 시간이 있었으며 예측은 여전히 진행중인 것으로 보입니다.
파이썬 3 코드를 입력 하는 사람들 print
은 함수가되는 것과 같은 구문상의 변화에 의해 가장 규칙적으로 물 렸지만 , 자동화 된 2to3
변환 도구가 그것을 아주 행복하게 처리 하기 때문에 실제로 라이브러리 포팅에 어려움이 없습니다 .
실제로 가장 큰 문제는 실제로 의미 론적 문제입니다 .Python 3은 Python 2처럼 텍스트 인코딩으로 빠르고 느슨하게 재생할 수 없습니다. 이것은 파이썬 2에 비해 가장 큰 이점이지만 포팅에 대한 가장 큰 장벽입니다. 유니 코드 처리 문제를 해결 하여 포트가 올바르게 작동하도록해야합니다 (2.x에서와 같이 많은 코드는 자동으로 잘못된 데이터를 생성했습니다) 비 ASCII 입력으로, 특히 비 ASCII 데이터가 일반적이지 않은 환경에서 작동하는 느낌을줍니다.
Python 3.0 및 3.1의 표준 라이브러리조차도 여전히 유니 코드 처리 문제가 발생하여 많은 라이브러리 (특히 웹 서비스 관련 라이브러리)를 이식하기가 어렵습니다.
3.2는 많은 문제를 해결하여 장고와 같은 라이브러리 및 프레임 워크에 대한 더 나은 대상을 제공합니다. 3.2는 또한 wsgiref
웹 공간에서 채택하기 위해 필요한 전제 조건 인 3.x 의 첫 번째 작업 버전 (웹 서버와 Python으로 작성된 웹 애플리케이션 간 통신에 사용되는 주요 표준)을 가져 왔습니다 .
NumPy와 및 SciPy와 같은 주요 종속 지금 포팅 된 설치 및 의존성 관리 툴이 좋아 zc.buildout
, pip
및 virtualenv
3.x를 사용할 수 있습니다, 피라미드 1.3 릴리스는 파이썬 3.2, 곧 장고 1.5 릴리스는 실험 파이썬 3를 지원합니다 지원하며 12.0 출시 Twisted 네트워킹 프레임 워크는 Python 3 호환 버전을 만들기위한 길을 개척하기 위해 Python 2.5에 대한 지원을 중단했습니다.
Python 3 호환성 라이브러리 및 프레임 워크에 대한 진전 외에도 널리 사용되는 JIT 컴파일 PyPy 인터프리터 구현은 Python 3 지원에 적극적으로 노력하고 있습니다.
마이그레이션 프로세스 관리 도구도 크게 개선되었습니다. 받는 사람뿐만 아니라 2to3
(지금 2.X 시리즈에 대한 지원을 유지하기 위해 필요로하지 않는 응용 프로그램의 1 시간 변환에 가장 적합한 것으로 간주됩니다) CPython과의 일부로 제공되는 도구도있다 python-modernize
용도, 이는 2to3
대상으로 인프라를 이 도구는 Python 2 및 Python 3의 가장 큰 공통 부분 집합입니다.이 도구는 six
호환성 라이브러리를 사용하여 Python 2.6 이상 및 Python 3.2 이상에서 실행되는 단일 코드 기반을 작성합니다 . Python 3.3 릴리스는 기존 유니 코드 인식 응용 프로그램을 마이그레이션 할 때 "소음"의 주요 원인 중 하나를 제거합니다. Python 3.3은 문자열 리터럴에 대해 'u'접두사를 다시 한 번 지원합니다 (실제로 는 그렇지 않음)파이썬 3에서 아무것도는 - 단지 만들기 파이썬 3로 마이그레이션 실수 방지하기 위해 복원 된 것 열심히 이미 제대로 자신의 텍스트와 파이썬 2 진 리터럴)를 구별 한 사용자를 위해.
그래서 우리는 실제로 상황이 어떻게 진행되고 있는지에 매우 만족합니다. 원래의 시간 프레임을 계속 진행하는 데 거의 2 년이 걸리며, 전체 파이썬 생태계를 통해 변화가 잘 풀립니다.
많은 프로젝트가 Python Package Index 메타 데이터를 제대로 선별하지 못하고 유지 보수 담당자가 적은 일부 프로젝트는 Python 3 지원을 추가하기 위해 갈 렸기 때문에 순수 자동화 PyPI 스캐너는 여전히 Python 3 라이브러리 상태에 대해 지나치게 부정적인 견해를줍니다. 지원하다.
PyPI에서 Python 3 지원 수준에 대한 정보를 얻는 데 선호되는 대안은 http://py3ksupport.appspot.com/입니다.
이 목록은 Brett Cannon (오래된 Python 핵심 개발자)에 의해 개인적으로 선별되어 잘못된 프로젝트 메타 데이터, 소스 제어 도구에는 있지만 아직 공식 릴리스에는없는 Python 3 지원 및 최신 포크가있는 프로젝트를 설명합니다. 또는 파이썬 3을 지원하는 대안들 많은 경우에, 파이썬 3에서 아직 사용할 수없는 라이브러리는 주요 의존성이 누락되거나 다른 프로젝트에서 파이썬 3 지원이 부족하여 사용자 요구를 줄입니다 (예 : 핵심 장고 프레임 워크가 Python 3, South 및 django-celery와 같은 관련 도구는 Python 3 지원을 추가 할 가능성이 높으며 피라미드 및 장고에서 Python 3 지원을 사용하면 Python 3 지원이 gevent와 같은 다른 도구에서 구현 될 가능성이 높아집니다).
http://getpython3.com/ 사이트 에는 Python 3 관련 서적 및 기타 리소스에 대한 훌륭한 링크가 포함되어 있으며 이미 Python 3을 지원하는 주요 라이브러리 및 프레임 워크를 식별하고 개발자가 금융 지원을받는 방법에 대한 정보를 제공합니다. 주요 프로젝트를 Python 3으로 이식하는 PSF
또 다른 좋은 자료는 새 프로젝트의 Python 버전을 선택할 때 고려해야 할 요소에 대한 커뮤니티 위키 페이지입니다. http://wiki.python.org/moin/Python2orPython3