2009-07-02 4 views
4

Python 3.0 (및 3.1)의 최종 릴리스에서 많은 사람들이 역 호환성 문제로 코드베이스의 절반을 잃지 않고 업그레이드하는 방법에 대한 걱정에 직면 해 있습니다.파이썬 3.0으로 업그레이드하기위한 팁?

다음 세대의 파이썬으로 전환 할 때 발생할 수있는 많은 함정을 피할 수있는 가장 좋은 방법은 무엇입니까?

은 아마 시작하기에 좋은 장소 :-)

답변

3

먼저 "3.X 당신의 파이썬 2.x에서 코드를 변환하는 사용 2to3"입니다,이 질문은 How are you planning on handling the migration to Python 3? 매우 유사하다. 거기서 답을 확인하십시오. 이 또한 파이썬 3.x를

Release Notes for python 3.0에 애플리케이션을 포팅에 대한 파이썬 위키에서 section

은 이식에 대한 섹션이 포함되어 있습니다. 나는 거기에 팁을 인용하고 있습니다 :

  1. (전제 조건이 뛰어난 테스트 커버리지 시작 :).
  2. 포트 투 파이썬 2.6. 이것은 Python 2.x에서 Python 2 (x + 1)까지의 평균값보다 더 많은 작업이 없어야합니다. . 모든 테스트가 통과되었는지 확인하십시오.
  3. (여전히 2.6을 사용 중입니다. :) -3 명령 줄 스위치를 켭니다. 이렇게하면 3.0에서 이 제거되거나 변경 될 기능에 대한 경고가 활성화됩니다. 테스트 스위트를 다시 실행하고 경고가 나타나지 않고 경고가 남아 있고 모든 테스트가 이 될 때까지 경고 메시지가 표시됩니다.
  4. 소스 코드 트리에서 2to3 소스 - 소스 변환기를 실행하십시오. ( 도구에 대한 자세한 내용은 2to3 - 자동 Python 2에서 3 코드 번역을 참조하십시오.) 번역 결과를 Python 3.0에서 실행하십시오. 수동으로 을 수정하여 모든 테스트가 다시 통과 될 때까지 문제를 수정하십시오.
모두 파이썬 2.6과 3.0에서 변경되지 않은 실행 소스 코드를 작성하려고하지 않는 것이 좋습니다

; 당신은 매우 contorted 코딩 스타일, 을 사용해야 할거야. 인쇄 문구 피하기, 메타 클래스 등. 당신이 지원 모두 파이썬 2.6과 파이썬 3.0에 필요한 라이브러리를 유지 을 경우, 가장 좋은 방법은 소스 코드의 2.6 버전을 편집하고 보다는, 다시 2to3 변환기를 실행하여 위의 3 단계를 수정하는 것입니다 3.0 버전의 소스 코드 을 편집합니다.

+1

나는 마지막 문장을 2.6 대신에 2.x라고 바꾸기로했다. 2.6은 새로운 인쇄 기능을 포함하여 많은 포워드 호환 기능을 가지고 있으므로 사용자는이 기능을 전혀 사용하지 않아도됩니다. –

2

업그레이드 할 강력한 이유가 없으면 작동하는 것을 고수 할 것입니다. 나는 매일 사용하는 스크립트를 업그레이드하는 것을 보았습니다. 볼 수있는 이익을 얻지 못하면 너무 많은 작업을했습니다.

"파산하지 않은 경우 고치지 마세요!"

+0

Ditto. 내가 의존하는 라이브러리의 상당수가 여전히 Python 2.5에 있습니다. 도서관이 옮겨 질 때까지 안정적인 것으로 판명 될 때까지 나는 머물러 있습니다. –

3

나는 이것에 대한 무료 책을 쓴다.당신은 여기를 읽을 수 있습니다

http://python3porting.com/

을 한마디로 : 을 :

  1. 확인 모든 타사 라이브러리는 공통의 모호성을 제거하여 코드를 준비
  2. 파이썬 3. 사용할 수 있습니다 확인
    • 정수 나누기를 실제로 사용하려는 경우 //를 사용하십시오.
    • 바이너리 파일을 열 때 'b'플래그로 플래그를 지정하고, 데이터가 바이너리인지 여부를 나타내는 을 명확하게 표시해야합니다.
  3. 테스트 커버리지가 높을수록 좋습니다.
  4. "Python 2.7 -3"에서 경고없이 실행되는지 확인하십시오.
  5. 이제 2to3을 실행하십시오.
  6. 버그를 수정하십시오.

다소 많습니다.

+0

죽은 동영상 링크 – jxramos

관련 문제