2012-01-04 7 views
8

여러 성숙한 파이썬 라이브러리가 대부분의 아키텍처 (Win32/Win-amd64/MacOS) 및 Python 버전의 프리 컴파일 버전을 가지고 있다는 것을 알고 있습니다. 다른 환경에서 확장 기능을 크로스 컴파일하는 표준 방법은 무엇입니까? 포도주? 가상 머신? 군중 소싱?다른 OS/Python 버전의 Python C/C++ 확장을 어떻게 컴파일합니까?

+2

[공식 Python 문서] (http://docs.python.org/distutils/builtdist.html)에서 이에 대한 일부 제한된 정보를 찾을 수 있습니다. –

+0

고마워요,하지만이 질문에 부분적으로 만 대답합니다. – golobor

+0

[Christoph Gohlke] (http://www.lfd.uci.edu/~gohlke/)가이 질문에 대답 할 수 있다고 생각합니다. 나는 그것에주의를 기울였다. –

답변

0

SWIG는 멀티 플랫폼 코드 생성을위한 경로를 제공합니다.

+0

죄송합니다. 나는 그것에 대해 명확하지 않았습니다. 문제는 코드 컴파일이 아니라 실제 컴파일에 관한 것입니다. – golobor

0

파이썬 확장 모듈은 모두 C가 아니기 때문에 C가 아니기 때문에 나는 파이썬을 사용합니다. 또한 다른 운영 체제를 지원해야하는 경우 가상 컴퓨터를 사용합니다. Boost의 bjam 빌드 드라이버를 사용하면 서로 다른 버전의 Python (2.6, 2.7) g ++ 및 다른 여러 가지 버전으로 빌드 할 수 있습니다. 매우 인기있는 확장 모듈이 있고 많은 사람들이 가지고 있지 않은 플랫폼에서이 모듈을 사용하고 싶다면 코드가 매우 이동성이 있어야합니다. (필연적이어야합니다) 빌드 방법에 대한 지침을 제공합니다. 서로 다른 Python 버전에 대한 몇 가지 다른 예제를 사용하여 bjam을 사용하면 충분합니다. 이것이 작동하면 다른 사람들이 사용할 수 있도록 빌드를 다시 제공하도록 요청할 수 있습니다 (물론 지원되지 않습니다).

7

우리는 가상 컴퓨터와 Hudson 서버를 사용합니다.

우리는 우리가 지원하는 각 아키텍처에 대해 가상 컴퓨터를 가지고 있습니다 (일반적으로 컴파일하면 할당 된 리소스가 늘어나지 않기 때문에 VM은 괜찮습니다). 각 VM의 구성은 Puppet 또는 Chef와 같은 것으로 관리하여 적합한 빌드 환경인지 확인할 수 있습니다. 하드웨어가 있다면 실제 머신을 사용할 수 있지만 실제로 사용하고있는 머신 (예 : 개발자 워크 스테이션)은 사용하지 않는 것이 좋습니다.

그런 다음 허드슨에서 다중 구성 프로젝트를 사용하여 빌드 매트릭스를 설정합니다. 빌드 매트릭스를 사용하면 한 번의 클릭으로 다중 아키텍처에서 다중 파이썬 버전을 빌드 할 수 있지만 이론적으로 매트릭스에 설정할 수있는 모든 조합을 빌드 할 수 있습니다. 물론 젠킨스를 대신 사용할 수 있습니다.

+0

대상 중 하나가 osX 인 경우 VM 방식이 "반"불법 인 것으로 추측됩니다 :) 여전히 VM 방식이 아마도 가장 좋은 방법이라고 생각됩니다. – ashwoods

+0

OSX에서 가상화를 허용했습니다. http://www.macworld.com/article/1163755/vmware_fusion_update_lets_users_virtualize_leopard_snow_leopard.html – hbar

+0

실제로 가상화 된 서버가 아닌 OSX 용으로 작은 Mac mini Farm을 사용합니다. 미안하지만 분명히해야합니다. 그 원래의 대답. 특히 이베이 (eBay)에서 구매할 때, 이것은 우리가 필요로하는 것만 큼 저렴하며 기계실 구석에 쌓여 있습니다. 그러나 hbar가 말했듯이, 가상화는 이제는 합법적 인 옵션입니다. –

관련 문제