2013-12-19 5 views
2

기본적으로 파이썬 언어를 배우려는 자바 프로그래머입니다. 일부 파이썬 라이브러리가 비 휴대용 방식으로 배포되는 이유를 명확히하고 싶습니다.파이썬 이식성 문제

내 생각을 설명해 드리겠습니다.

my-great-lib-1.2.4.jar 

내가 Windows 또는 Linux의 모든 버전에서이 LIB (같은 파일)을 사용할 수있는 사람은 그가 다른 플랫폼에서 사용할 수있는 1 (하나) JAR 파일을 준비하는 자바를 사용하여 정기적으로 라이브러리를 작성합니다.

자바 대조적으로, 파이썬 라이브러리는 다음과 같이 보일 수 있습니다 :

bsdiff4-1.1.4.win-amd64-py2.5.exe 
bsdiff4-1.1.4.win-amd64-py2.6.exe 
bsdiff4-1.1.4.win-amd64-py2.7.exe 
bsdiff4-1.1.4.win-amd64-py3.2.exe 
bsdiff4-1.1.4.win-amd64-py3.3.exe 
bsdiff4-1.1.4.win32-py2.5.exe 
bsdiff4-1.1.4.win32-py2.6.exe 
bsdiff4-1.1.4.win32-py2.7.exe 
bsdiff4-1.1.4.win32-py3.2.exe 
bsdiff4-1.1.4.win32-py3.3.exe 

page에 전체 목록을 참조하십시오.

나에게는 매우 이상해 보입니다. 32 비트 및 64 비트 플랫폼에서도 다른 설치 관리자가 필요합니다. 인스톨러! 하나의 라이브러리를 사용하려면 왜 설치 프로그램이 필요합니까? 또한, 설명 된 설치 프로그램은 Windows 전용입니다. 각각은 특정 파이썬 버전에 바인딩됩니다. 이식성은 어디에 있습니까?

누구나 위의 10 가지 파일의 필요성을 설명 할 수 있습니까?

+0

'py'다음의 숫자는 다른 버전의 python에 대한 것입니다. 자바 버전이 한 번만 있다고 말하는 것입니까? – doctorlove

+0

이식성은 컴파일 된 C 코드에 있습니다.'pip'와 같은 패키지 관리자를 사용하면 자신의 플랫폼에 맞게 컴파일 할 수 있습니다. – Eric

+0

자바 6에 대한 단일 항아리를 컴파일하면 Java 6에서 작동합니다 , 7, 8. 여전히 한 항아리. 그것들을 설치하는 – tmporaries

답변

0

하나의 python 버전이 주위에 뛰어납니다. 파이썬 3에서는 일부 내장 함수의 구문이 완전히 변경되었습니다. 예를 들어 :

input() 

또한, 표준 라이브러리를 많이도 3.4의 알파에서 변경되었습니다

raw_input() 

로 변경. 32/64 비트 질문에 대해서는 완전히 대답 할 수 없습니다. 32/64를 실행하려고 할 때 특정 플랫폼에 문제가 있다는 것을 알고 있습니다.

1

많은 합병증이 있습니다. 자바에서 코드와 바이트 코드가 JVM에 의해 해석되는 곳에서, 고유 한 컴퓨터 아키텍처는 코드가 JVM에 의해 잘 해석되는 한 많은 역할을하지 못합니다. 실제로 이것은 Java가 JVM에 의해 컴파일 된 것에 대해서만 걱정해야하기 때문에 Java가 그다지 인기가없는 주된 이유 중 하나입니다.

그러나 파이썬에서는 상황이 다릅니다. 나는 다음과 같은 라인에서 중요하다고 생각하는 이유의 일부를 요약하는 것을 시도하고있다 :

  • 언어 (당신이 생각하는 경우가 시나리오 긴하지만!) 자체가 진화하고 변화가 언어 내부에서 일어나고있다. 새로운 기능이 추가되거나 언젠가는 언어의 일부 리모델링 (파이썬 2.x에서 파이썬 3.x)이 수행됩니다.
  • 파이썬은 C 언어 확장과 파이썬으로 작성된 응용 프로그램에 크게 의존합니다. 파이썬 프로그램을 작성하고 CPU 집중적 인 코드를 사용한다면 C로 작성하도록 선택할 수 있습니다. 이렇게하면 다양한 배포를 위해 라이브러리를 여러 개 만들 필요가 있습니다.
2

일반적으로 파이썬 라이브러리는 여러 플랫폼에서 이식 가능합니다. 서로 다른 주요 Python 버전 (3은 2에서 큰 변화가 도입되었지만 2.7은 2.6과의 하위 호환)간에 또는 CPU 집중 코드를 최적화하기 위해 C 코드를 사용할 때 문제가 발생합니다. Linux에서 직접 컴파일하는 것은 문제가되지 않습니다. pip install package를 호출하면 문제가 해결됩니다. 문제는 Windows에서 발생합니다. C 프로그램을 컴파일하는 것이 훨씬 어렵습니다. 특히 모든 사람이 컴파일러를 가지고 있지 않기 때문입니다. 그래서 Windows에서는 C로 무언가 필요한 패키지를 설치해야합니다.

또한 설치 프로그램이 모든 것을 멋지게 설정하고 모든 것을 넣을 수있는 적절한 장소가 있는지 살펴보고이를 제거하는 표준 방법을 제공합니다 (Chrisopther Goelke의 사이트에서 프로그램 추가/제거를 사용하여 제거 할 수 있음). Windows의 표준이기 때문에 Windows의 대부분의 프로그램은 표준 및 광범위한 패키지 관리자가 없기 때문에 exe를 통해 설치됩니다.

다음 라이브러리는 모두 이식성이 있습니다. 모든 플랫폼에서 사용할 수 있지만 설치 방법은 다릅니다.

+0

은 휴대용이 아닙니다. – jeremyjjbrown