문제

이 질문은 이미 여기에 답이 있습니다.

따라서 Python 3.0 (및 현재 3.1)의 최종 릴리스에서 많은 사람들이 뒤로 비 호환성으로 인해 코드베이스의 절반을 잃지 않고 업그레이드하는 방법에 대한 걱정에 직면하고 있습니다.

파이썬의 차세대로 전환함으로써 거의 발생할 수없는 많은 함정을 피하기위한 사람들의 가장 좋은 팁은 무엇입니까?

시작하기에 좋은 곳은 "2to3를 사용하여 Python 2.x 코드를 3.x로 변환":-)입니다.

도움이 되었습니까?

해결책

첫째,이 질문은 매우 유사합니다 Python 3으로의 마이그레이션을 어떻게 처리 할 계획입니까?. 거기에서 답을 확인하십시오.

또 한있다 부분 Python 3.x에 응용 프로그램을 포팅하는 것에 대한 Python Wiki에서

그만큼 Python 3.0에 대한 릴리스 노트 포팅에 관한 섹션이 포함되어 있습니다. 나는 거기에 팁을 인용하고있다 :

  1. (전제 조건 :) 우수한 테스트 범위로 시작합니다.
  2. 포트에서 파이썬 2.6. 이것은 Python 2.x에서 Python 2까지의 평균 POR보다 더 이상 작동하지 않아야합니다 (x+1). 모든 테스트가 통과해야합니다.
  3. (여전히 2.6을 사용하고 있습니다 :) -3 명령 줄 스위치를 켭니다. 이를 통해 3.0에서 제거 (또는 변경) 할 기능에 대한 경고가 가능합니다. 테스트 스위트를 다시 실행하고 경고가 남지 않을 때까지 경고를받는 코드를 수정하십시오. 모든 테스트가 여전히 통과하십시오.
  4. 소스 코드 트리를 통해 2to3 소스 간 소스 번역기를 실행하십시오. 이 도구에 대한 자세한 내용은 2To3- 자동화 된 Python 2 ~ 3 코드 변환을 참조하십시오.) Python 3.0에서 번역 결과를 실행하십시오. 남은 문제를 수동으로 수정하여 모든 테스트가 다시 통과 될 때까지 문제를 해결하십시오.

Python 2.6 및 3.0에서 변경되지 않은 소스 코드를 작성하는 것이 좋습니다. 인쇄문, 메타 클래스 등을 피하는 매우 뒤틀린 코딩 스타일을 사용해야합니다. Python 2.6과 Python 3.0을 모두 지원 해야하는 라이브러리를 유지하는 경우 3.0 버전의 소스 코드를 편집하고 2to3 번역기를 다시 실행하여 위의 3 단계를 수정하는 것이 가장 좋습니다. 소스 코드.

다른 팁

나는 이것에 대한 무료 책을 씁니다. 여기에서 읽을 수 있습니다.

http://python3porting.com/

요컨대 :

  1. Python 3 용 모든 타사 라이브러리를 사용할 수 있는지 확인하십시오.
  2. 일반적인 모호성을 제거하여 코드를 준비하십시오.
    • // 정수 부서를 정말로 원한다면 사용하십시오.
    • 문을 열 때 'B'플래그로 바이너리 파일을 플래그하는지 확인하여 데이터가 이진인지 아닌지 명확하게 표시하십시오.
  3. 테스트 범위가 높을수록 좋습니다.
  4. "Python 2.7 -3"에 따라 경고없이 실행되는지 확인하십시오.
  5. 이제 2to3를 실행하십시오.
  6. 버그를 수정하십시오.

그게 다야.

업그레이드해야 할 정말 강력한 이유가 없다면, 나는 작동하는 것을 고수 할 것입니다. 나는 매일 사용하는 스크립트를 업그레이드하는 것을 보았고 볼 수있는 혜택이 없기 때문에 너무 많은 일이었습니다.

"부러지지 않았다면 고치지 마십시오!"

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top