2017-10-19 22 views
5

나는 파이썬 표준 라이브러리의 두 csvre 모듈은 자신의 .__version__ 속성이 나타났습니다 : 그들은 표준 라이브러리의 일부로서왜 Python 표준 라이브러리의 일부 모듈에는 __version__ 문자열이 있습니까? 사고로

>>> import re, csv 
>>> re.__version__ 
'2.2.1' 
>>> csv.__version__ 
'1.0' 

그것은 나에게 놀라움을, 그래서 자신의 버전에 의해 정의 될 기대 sys.version (및 sys.version_info).

모듈이 변경 되었음에도 불구하고 속성 값이 Python 2.7.13과 3.6.1에서 모두 같습니다.

그들은 단지 "코드 화석"일까요? 아니면 어떻게 든 의미가 있으며 프로그래머는 자신의 가치에주의를 기울여야합니까?

+1

난 당신이 라이브러리의 버전 파이썬의 버전을 혼합 생각합니다. 예를 들어 Linux-3.16 OS에서 작동하는 경우, Firefox 3을 실행하여 웹을 탐색해야한다는 의미는 아닙니다. 버전 번호는 전역이 아닙니다. –

+2

대답은 아닙니다만, 다음과 같을 것입니다 : * "다른 파이썬 버전을 위해 독립형 형태로 발표 된 표준 라이브러리 모듈은 사례별로 표준 라이브러리에 포함될 때 모듈 버전 번호를 포함해야하며 (SHOULD) "(source) (https://www.python.org/dev/peps/pep-0396/#id25) – vaultah

+0

또한 표준 라이브러리는 일반적으로 패키지가 포함 된 패키지 모음입니다. 특정 버전 번호. 그러나 패키지 개발은 계속됩니다. 따라서 실험적인 기능을 제공하는 "야간 빌드"버전의're'를 사용할 수도 있지만 표준 라이브러리에 포함 시키려면 아직 완전히 테스트하지 않았습니다. 보통 표준 라이브러리는 다소 신뢰성있는 * 고품질 패키지를 선택하는 것을 목표로합니다. –

답변

1

C에서 모듈의 소스 버전이 변경되지 않았다고 가정 할 수 있습니다. 파이썬 모듈의 소스 코드 만 다른 버전의 Python에서 변경되었습니다. python 저장소에있는 소스 코드를 찾는 것은 전체 상황을 비추어 줄 수 있습니다. 예를 들어

:

+0

기본적으로 옳습니다. 그러나're '에 대한 버전은 현재 동기화 상태가 아닌 것 같습니다 :'re .__ version__'은 2.2.1을 제공하지만're.sre_compile._sre.copyright'는 2.2.2를 제공합니다. – ekhumoro

+0

@ekhumoro'sre'은 Python 모듈're'에서 가져온 C lib입니다. 버전은 동일하므로 버전이 같지 않을 수 있습니다. –

+0

아니요, 답안에서 준 이유와 정확히 일치하지 않아야합니다. 나는 누군가가 방금 C lib 버전이 부딪힌 마지막 시간에 파이썬 모듈을 업데이트하는 것을 잊었다 고 생각한다. csv 모듈은 C lib에서 직접'__version__ '을 얻습니다. 그래서 잠재적 인 문제는 없습니다. – ekhumoro