2012-01-27 12 views
13

py2exeは素晴らしいですし、Windowsシステム上で動作するPythonプログラムをパッケージ化したいときはいつでも使用します。py2exeのクロスプラットフォームの代替

私の質問は、Windows上でプログラムをパッケージ化するのに使用できる同等のツールがあるのですが、Linuxで実行できるのですか?

+0

:残念ながら、このための私のコードは、この質問への関連性を持っていないので、私が作業プログラムを貼り付けることはできません、単にいくつかのスニペットの追加合併症に​​散らばっている

pythonは既にほとんどのLinuxシステムにインストールされています。 – ThiefMaster

+2

はい、でも、対象のLinuxシステムにインストールすることなく、インポートされたモジュールを含め、すべての関連するソースファイルを簡単にパッケージ化したいと思います。 – xorsyst

答えて

1

[OK]を実行しました。ちょっとハッキリですが、私のユースケースではうまく動作します。

その要点は、ModuleFinderを使用して、インポートされたすべてのモジュールを見つけ出し、システムのものを除外し、コンパイルして、それらを圧縮することです。あなたが安全ということを想定することができ

zipfile = ZipFile(os.path.join(dest_dir, zip_name), 'w', ZIP_DEFLATED) 
sys.path.insert(0, '.') 
finder = ModuleFinder() 
finder.run_script(source_name) 

for name, mod in finder.modules.iteritems(): 
    filename = mod.__file__ 
    if filename is None: 
     continue 
    if "python" in filename.lower(): 
     continue 

    subprocess.call('"%s" -OO -m py_compile "%s"' % (python_exe, filename)) 

    zipfile.write(filename, dest_path) 
6

また、Linux、MacOS、WindowsをサポートするPyInstallerもあります。まだ使用していませんので、Linux用のパッケージをパッケージ化できるかどうかはわかりませんが、manual以上が可能です。

EDIT: FAQ状態明示的には、LinuxからWindowsパッケージとLinuxからなしのMac OSパッケージを作成することができないということは、どちらも - そこに、他の2つのソースからのLinuxパッケージの作成については何もありませんが、そうではないかもしれません作業。

EDIT2: も一見の価値があるかもしれない私はcx_freezeを発見したビットをグーグル後。

+0

興味深いアイデアだが、私はどちらかの仕事をすることはできなかった。しかし、提案をありがとう。 – xorsyst

5

私は本当にあなたがそのような何かをすることができることを本当に疑っています。

あなたができることは、自分のプログラムを実行するのに必要なすべてのものがある、Windows用、MacOS用、Linux用の3つのVMを構築することです。

次に、py2exe/py2app/pyinstallerの組み合わせを使用して、各プラットフォームのディストリビューションを生成します。 3つの異なるパッケージがありますが、それぞれがきちんとパックされ、クライアントマシンに他のものをインストールする必要はありません。