2012-03-01 4 views
0

大きなPythonプログラムを1つのファイルにパッケージングする予定です。実行可能なpythonプログラムを1つのファイルにパッケージ化する方法

私の要件は以下のとおりです。

  • ファイルをダウンロードするための

    • のみ1ファイルが
    • をチェックサムすることができ、理想的にファイルには、いくつかのバージョン情報が
    • は、これまでのシステムのpython

    を使用しています含まれていますパッケージ形式の最適な候補は.eggと.zipです。

    は実際には卵とジップの間にという違いがありますか?私はするつもり何

    組み込みシステムは、例えば、私のコードをダウンロードしますpackage.zip;自分のコードを開始します。 python2 package.zip自分のコードで自分自身を確認できます。 md5sum sys.argv[0]。チェックサムは私のサーバーで報告され監視されます。

  • 答えて

    1

    は、のzipファイルです。

    パッケージに使用する方法にかかわらず、ファイルにmd5sum(または他のハッシュ関数)を使用することができます。ファイルの拡張子は気にしません。バイナリの内容同じだ。

    +0

    いいえ、卵はジップです。 – Marcin

    +0

    ありがとうございました。 –

    +0

    確かに、違いは何ですか? eggファイルを 'python2 p.egg'経由で実行すると、egg importフックまたはzipインポートフックが使用されますか?私は "卵は名前を変更することはできません"という問題などに影響を受けていますか? –

    2

    ジップファイルは、ビルトインインポートが自動的にインポートされるという点で少し魔法です。私は卵を直接輸入しようとしたことがないので、それがうまくいくかどうかわかりません。

    あなたが卵を使用することから得られる大きな利点は、パッケージの依存関係を指定できることです。これは大したことではないかもしれません。卵を使って要件を設定し、必要に応じてピピに公開し、ユーザーの生活を楽にしました。

    一度パッケージされると、pip(http://pypi.python.org/pypi/pip)はパッケージを扱いやすくします。これは、ピップページから直接リッピングされた例です -

    $ pip install simplejson 
    
    $ pip install --upgrade simplejson 
    
    $ pip uninstall simplejson 
    

    少しの作業から多くのバングを得ることができます。ピピに物事をプッシュしたくない場合は、自分の秘密Pypi(ウェブサーバーを読む)に公開し、ピップがパッケージを見つけるために別のURLを使用するように指定することができます。

    $ pip install -i http://mycoolserver.com/pypi 
    

    私はPIPの専門家だが、簡単に(ピップの前身)をインストールすると、あなたは、Apacheとかなり簡単、あなた自身は、PyPIを作成することができます。単にpypiディレクトリを公開し、インデックスを表示できるようにします(私は正しい専門用語だと思います)。そのため、ファイルシステムのpypiを参照できます。この設定では、あなたのパッケージの名前を持つディレクトリを作成し、そこで卵をドロップします。それは "うまくいく"(私にとってはうまくいく:-))

    +0

    ありがとう、私はパッケージをインストールするつもりはないが、それを実行するだけです。 –

    +0

    いくつかの卵は実行可能とマークされています。私は一度も使ったことがありませんが、私が読んだことから、卵の冒頭にスタブコードが追加されています。何らかのシェルスクリプトのような魔法のように聞こえる。 なぜそれを卵としてまとめてどこかのWebサーバーに置くのはなぜなのか、私は本当に分かりません。あなたの人生は大幅に簡素化されます。 – jaime

    0

    編集:あなたの必要を明確にする前にこれを書いた。これは、システムのpython実行可能ファイルを使用しないので適合しないようです。

    ご質問のタイトルは、の正規品(つまり、非Pythonista)windowsエンドユーザーこれをダブルクリックするだけで実行できます。 Py2exeはまさにこの目的に役立ちます。

    ほとんどのLinuxユーザーは、実行可能ファイルではなくsetup.pyファイルを使ってアーカイブを作成すると想定していたので、これを前提としました。 Mac OS Xについては、わからない。

    関連する問題