2016-12-20 1 views
1

파이썬 3.5로 업그레이드하고 싶지만 레거시 파이썬 2.7 패키지를 사용합니다. 파이썬 3.5에서 레거시 패키지를 쉽게 실행할 수 있습니까? 나는 이것이 쉬운 일이 아니라는 인상 아래에서 해왔지만, 내가 틀렸는지를 알기 위해 몇 가지 조사를 했었고, 많이 찾지 않았다.파이썬 3.5에서 레거시 파이썬 2.7 코드를 실행할 수 있습니까?

3.5 코드와 2.7 패키지 사이의 표준화 된 핸드 오프를 허용하는 멀티 프로세싱 패키지가 있어야만 개발자가 자신의 환경에서 독립적으로 실행할 수 있지만 개발자에게는 어느 곳에서나 원활하게 사용할 수 있습니다.

나는 내 자신의 코드를 3.5로 변환하는 것에 대해 이야기하는 것이 아니라, 내가 사용하는 라이브러리가 나와 관련하여 업데이트되지 않을 것이라고 말하고있다.

+1

많은 레거시 패키지는 python3.x와 함께 제공되는'2to3' 도구로 업그레이드 할 수 있습니다. 그러나이 도구는 100 % 완벽하지 않습니다. 패키지가 작동하는지 여부를 알 수있는 가장 좋은 방법은 시도해보고 어떤 일이 일어나는지 확인하는 것입니다 (또는 문서에서 어떤 방식 으로든 python3.x를 지원하는지 확인하십시오). – mgilson

+4

아니요, 변환하여 광범위하게 테스트해야합니다. 구문 변경이 있지만 부서 결과와 같은 미묘한 문제도 있습니다. 그런 다음 C로 작성된 모듈이 있으며 API 변경 사항을 기록하고 Python 3 런타임과 링크해야합니다. – cdarke

답변

1

2.7에서 지원하는 최신 구문을 사용한 경우 (예 : 예외 처리 및/또는보다 나은 것은 __future__에서 가져온 새로운 기능을 사용하여 코드를 Python 3으로 변환하는 데 훨씬 쉽게 시간을 할애 할 수 있습니다. 이 경로를 먼저 따르는 것이 좋습니다. 점차적으로 진행될 수 있으므로 Python 3으로 갑자기 이동할 필요가 없습니다.

다른 버전의 Python 프로세스가 상호 운용 될 수 있다고 생각합니다. 개체 피클링 형식이 호환 가능하므로 명시 적으로 그것을 보장하기 위해 양측에서 특정 산 세척 프로토콜 버전을 사용하십시오. 나는 어느 쪽에서도 multiprocessing 패키지가 너무 유용하다고 생각하지 않는다. 예 : 좀 더 일반적인 해결책으로 ZeroMQ.

1

3.5 아래의 2.7 코드 처리를 완벽하게 처리하는 "좋은"자동 방법은 없습니다.

당신은 자신의 코드가 아니라 라이브러리에 관심이 있다고 말했습니까? 첫째, 활발한 개발 중일 경우 업데이트 될 것입니다. 그렇지 않다면, 당신이 말했듯이, 미래의 증거로 쓰여질 가능성이 있습니다. 좋은 예가 있습니다 (예 : google-api-python-client, 예 : https://github.com/google/google-api-python-client/blob/master/setup.py).

업그레이드하는 유일한 방법은 모든 구문 변경을 직접 수정하는 것입니다. 제가 다루는 가장 일반적인 것들은 '인쇄'와 예외 처리입니다.