2012-01-04 3 views
8

私は、成熟したいくつかのPythonライブラリに、ほとんどのアーキテクチャ(Win32/Win-amd64/MacOS)とPythonのバージョン用にプリコンパイルされたバージョンがあることに気付きました。さまざまな環境で拡張機能をクロスコンパイルする標準的な方法は何ですか?ワイン?仮想マシン?クラウドソーシング?PythonのさまざまなOS /バージョンの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

私のPython拡張モジュールはすべてC言語であり、C言語ではないので、Pythonを使用します。私は、異なるオペレーティングシステムをサポートする必要があるときにも仮想マシンを使用します。 Boostのbjamビルドドライバでは、さまざまなバージョンのPython(2.6,2.7)異なるバージョンのg ++​​やさまざまなものをビルドすることができます。私が普及している拡張モジュールを持っていて、私が持っていないプラットフォームでそれを使いたい人がたくさんいたら、さまざまなPythonのバージョンなどにいくつかの異なる例を使用してbjamを使用すると、それらを起動させるには十分です。これがうまくいけば、他の人がそれらを使うことができるようにビルドに貢献するように彼らに依頼することができます(もちろんあなたがサポートしていません)。

7

仮想マシンとHudsonサーバーを使用します。

私たちがサポートする各アーキテクチャには仮想マシンがあります(一般的にコンパイルすると、割り当てられたリソースが伸びないため、VMは問題ありません)。私は、それぞれのVMの設定をPuppetやChefのようなもので管理して、それが適切なビルド環境であることを確認できたと思います。ハードウェアを持っている場合はもちろん、実際のマシンを使用することはできますが、実際に使用しているマシン(デベロッパー・ワークステーションなど)は使用しないでください。

次に、ハドソンでマルチ構成プロジェクトを使用してビルドマトリックスをセットアップします。ビルド・マトリックスは、複数のアーキテクチャー上で複数のPythonバージョンを(ワン・クリックで)ビルドすることができますが、理論上は、あなたがマトリクスに設定できるあらゆる組み合わせを構築することができます。もちろん、代わりにジェンキンスを使うことができます。

+0

あなたのターゲットの1つが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ミニファームを使用しています - 申し訳ありませんが、それは元の答えです。特にeBayから購入する場合、これらは私たちが必要とするほど安く、機械室の角に積み重ねられます。しかし、バーが言うように、これらを仮想化することも現在法的な選択肢です。 –

関連する問題