2015-01-14 3 views
0

저는 파이썬 2에서 잘 작동하는 오픈 소스 프로젝트를 가지고 있으며 파이썬 3에서도 작동하도록 만들고 있습니다. 코드에서 if 문을 사용하여 sys.version_info.major을 검사하는 한 가지 방법을 시도했지만이 방법이 더러워 보입니다. 여러분이 pip install을 사용할 때 호환되는 패키지를 자동으로 선택한다는 것을 setup.py에 지정할 수 있습니까?다양한 주요 인터프리터를 지원하는 파이썬 패키징

이렇게하면 github에서 코드와 패키지를 분기 할 수 있습니다. 때문에 사용자가 python3이있는 경우 내가

x1.2 for python < 3 
x1.1 for python >= 3 

을 말할 수, 핍은 당신이 사용할 수있는

답변

1

에서 가장 좋은 조리법을 찾을 수 있습니다 더 설치해야 버전을 pip 지정할 수있는 방법이 없습니다. Trove 분류 자에서 Python 호환성을 지정할 수 있지만, pip은 그 차이를 기반으로 다른 버전을 선택하지 않습니다.

파이썬 2와 3 모두에서 작동하는 버전을 작성해야합니다. Porting Python 2 Code to Python 3 guide을 읽고, six과 같은 호환성 레이어 지원 라이브러리를 사용하는 것이 좋습니다. Modernize tool을 사용하면 여기에 코드를 다시 작성할 수 있습니다.

+0

감사합니다. 이것은 핏의 큰 결함입니다. 실제로 물건을 수동으로 이식 할 수 있었지만 이제는 더 쉬운 방법이 있다는 것을 알고 있습니다. 유일한 문제는 패키지 이름의 변경으로 인해 코드가 추악 해지기 시작하여 조건을 지정해야한다는 것입니다. 나는 다른 접근법이 누군가가 관심을 가질 지 모르지만 프로젝트/패키지 이름에 "3"이 추가 된 중복 프로젝트를 만드는 것이라고 생각한다. – max

1

X1.1 (안 최신하지만 python3에 대한 최신 패키지)를 잡아해야 2to3 :

2to3은 Python 2.x 소스 코드를 읽고 일련의 수정자를 적용하여 유효한 Python 3.x 코드로 변환하는 Python 프로그램입니다.

및 @Martijn 코멘트에서 말하는 것처럼 당신은 Porting Python 2 Code to Python 3

+0

'2to3'은 3.x에서 모든 프로젝트 작업을하는 마법의 총알이 아닙니다. 당신은 여전히 ​​이것을 위해 어떤 일을해야합니다. –

+0

@MartijnPieters 나는 그것이 OP의 코드에 달려 있다고 생각한다! 그렇지? – Kasramvd

+0

예, 그게 내가 말하는 것입니다. –

관련 문제