생산 개발 노력 (및 그 이유)을 위해 어떤 버전의 Python (2.4, 2.5, 2.6, 3.0)을 표준화합니까?

StackOverflow https://stackoverflow.com/questions/812085

문제

우리 그룹에서는 주로 검색 엔진 아키텍처 및 컨텐츠 통합 작업을 수행하며 대부분의 코드 기반은 Python에 있습니다. 모든 빌드 도구 및 Python 모듈 종속성은 소스 제어에 있으므로 확인할 수 있으며 OS/플랫폼에 관계없이 사용하기 위해 환경이 접근 방식과 유사합니다. virtualenv 용도.

수년 동안 우리는 Python 2.3과 호환되는 코드 기반을 유지해 왔습니다. 우리가 사용하는 상용 제품 중 하나는 Python 2.3에 따라 다릅니다. 수년에 걸쳐 새로운 도구와 라이브러리에는 2004 년에 2.3이 나온 이후 새로운 도구와 라이브러리가 새로운 파이썬이 필요함에 따라 점점 더 많은 문제를 일으켰습니다.

우리는 최근에 상용 제품 환경에 대한 의존성에서 빌드 환경을 분리했으며 원하는 Python (또는 Java) 버전을 사용할 수 있습니다. Python 2.6에서 이전 버전과 호환되는 최신 Python 버전으로 표준화 한 이후 약 한 달 정도였습니다.

Python 3.0은 옵션이 아닙니다 (현재)는 코드 기반을 너무 많이 마이그레이션하여 빌드 및 통합 도구를 다시 올바르게 작동하도록해야합니다.

우리는 Python 2.6의 많은 새로운 기능, 특히 개선 된 모듈 및 클래스 데코레이터와 같은 것들을 좋아하지만, 우리가 의존하는 많은 모듈은 Python 2.6 통역사가 다양한 감가 상각 경고를 촉진하게합니다. EC2 클라우드 클러스터 노드 관리에 관심이있는 또 다른 도구 감독자 Python 2.6에서는 올바르게 작동하지 않습니다.

이제 생산 환경 도구 개발에서 Python 2.6을 사용하는 대신 현재 Python 2.5를 표준화 해야하는지 궁금합니다. 우리가 원하는/필요한 대부분의 도구는 Python 2.5에서 올바르게 작동하는 것 같습니다. Python 2.6 기능 또는 모듈에 대한 많은 의존성이 있기 전에 지금 이것을 분류하려고합니다.

많은 감사합니다!

-남자 이름

도움이 되었습니까?

해결책

나는 감가 상각 경고 때문에 2.6을 포기하지 않을 것이다. 그것들은 시간이 지남에 따라 사라질 것입니다. (당신은 사용할 수 있습니다 -W ignore Python 통역사에게 최소한 인쇄되는 것을 방지하기 위해 Python 통역사에게 옵션) 그러나 모듈을 사용해야하는 경우 실제로 Python 2.6에서 작동하지 않으면 2.5를 유지 해야하는 합법적 인 이유입니다. Python 2.5는 현재 널리 사용되고 있으며 아마도 앞으로 오랫동안 (2.3이 얼마나 오래 지속되었는지 고려할 것입니다!), 2.5와 함께가더라도 한동안 업그레이드 할 수는 없습니다.

모든 개발 작업에 Python 2.5를 사용하지만 Gentoo (Linux)의 패키지 저장소에서 사용할 수있는 버전이기 때문입니다. Gentoo 관리자가 Python 2.6 "Stable"을 선언 할 때*, 나는 그것을 전환 할 것이다. 물론,이 추론이 반드시 당신에게 적용되는 것은 아닙니다.

* Python 2.6은 실제로 안정적입니다. Gentoo에서 선언되지 않은 이유는 Gentoo가 자체가 Python에 의존하고 아직 2.6으로 업그레이드되지 않은 다른 프로그램에 의존하기 때문입니다. 다시 말하지만,이 추론은 아마도 당신에게 적용되지 않을 것입니다.

다른 팁

우리 회사는 2.5로 표준화되었습니다. 당신처럼 우리는 백만 가지 이유로 3.0으로 전환 할 수는 없지만, 우리가 2.6으로 이동할 수 있기를 바랍니다.

코딩하는 일상적으로 문서를 살펴보고 원하는 모듈이나 기능을 정확히 찾을 수 있지만 작은 주석이 있습니다 : 버전 2.6의 새로운 주석이 있습니다.

나는 최신 버전을 사용한다고 말하고 감가 상각 경고가 팝업되면 (아마도 거의 없을 것입니다) 더 나은 방법을 찾으십시오. 전체적으로 코드는 2.6으로 더 좋습니다.

나에게 Python 2.5+를 고수하는 것이 가장 중요한 것은 공식적으로 지원하기 때문입니다. ctypes, 많은 플러그인 시스템을 변경했습니다.

2.3/2.4에서 사용할 수있는 CTypes를 찾을 수 있지만 공식적으로 번들은 없습니다.

그래서 제 제안은 2.5입니다.

우리는 지금 2.5.2를 고수하고 있습니다. 우리의 기술 스택은 Django를 중심으로합니다 (그러나 우리는 12 개의 다른 비트와 밥이 있습니다.) 그래서 우리는 그들이하는 일에 가깝게 지냅니다.

우리는 epydoc 3.0.1과 함께 작동 할 수 있도록 docutils로 돌아 가야했습니다. 지금까지 이것은 큰 문제가 아니었지만 어느 시점에서 우리가 Epydoc 사용을 다시 생각하게 만들 수 있습니다.

2.6 업그레이드는 개발 계획의 일부입니다. 우리는 예산이 있지만 지금은 고정 일정이 없습니다.

마찬가지로 3.0 업그레이드는 내가 사람들에게 상기시키는 것입니다. 우리는 그것을 위해 예산을 가져야합니다. Django가 3.0으로 도약하지 않는 한 올해는하지 않을 것입니다. 우리는 내년에 할 수 있습니다.

가장 좋은 해결책은 일반적인 환경을 갖는 것이 노력하는 것이지만 총 균일성에 대한 희망을 포기하는 것입니다. 예를 들어 다음 최고의 통역사 버전으로 업그레이드 할 때 항상 버전 문제에 직면하게됩니다.

따라서 이슈당 기반에서 처리하는 대신 릴리스 관리를 잘 살펴보면이 문제를 해결할 수 있습니다.

소스를 해제하는 대신 소스 분포 외에 바이너리에 따라 플랫폼을 찾으십시오.

그래서 당신이하는 일은 x86-32, x86-64, sparc와 같은 여러 지원되는 CPU를 정의한다는 것입니다.

그런 다음 어떤 운영 체제 : Linux, Windows, Solaris, Freebsd

각 OS마다 여러 주요 버전을 지원합니다.

다음 단계는 당신이 그들 모두에게 바이너리를 제공한다는 것입니다.

그렇습니다. 실제로 이것은 저장소에서 상당히 인프라 투자와 자동 건물을 설정해야합니다 (당신은 그것을 가지고 있습니까?).

장점은 사용자가 설치할 '하나만 설치하는 것만 가지고 있으며 버전을 쉽게 전환하거나 버전을 혼합 할 수 있다는 것입니다. 실제로 릴리스 관리에 너무 많은 영향을 미치지 않으면 서이 접근 방식으로 다른 프로그래밍 언어를 사용할 수도 있습니다.

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