4

次のようないくつかの大きなライブラリに依存する小さなPythonプログラムがいくつかあります。

  • NumPy&SciPy
  • matplotlib
  • PyQt
  • OpenCV
  • PIL

これらのプログラムをWindowsユーザーが簡単にインストールできるようにしたいと思います。現在、2つのオプションがあります。

  • PyInstaller、py2exe、または同様のツールを使用して巨大な実行可能バンドルを作成し、
  • または、ステップバイステップの手動インストール手順を記述します。

実行可能バンドルは大きすぎます。私はいつも何か魔法が起こっているように感じます。それは次に別のライブラリや新しいライブラリバージョンを使用するときに機能する場合と機能しない場合があります。無駄なスペースも嫌いです。手動インストールは簡単に間違って実行できます。手順が多すぎます。この特定のインタープリターバージョンをダウンロードし、numpy、scipy、pyqt、pilバイナリをダウンロードし、それらがすべて同じpythonバージョンと同じプラットフォーム用にビルドされていることを確認してから1つインストールします。もう1つは、OpenCVをダウンロードして解凍し、Pythonインストールの奥深くにある.pydファイルをコピーし、環境変数とファイルの関連付けを設定します...ご覧のとおり、これらすべてを実行するための忍耐力と自信を持っているユーザーはほとんどいません。

私がやりたいこと:小さなPythonソースと、おそらくインストールスクリプトだけを配布します。これは、不足しているすべての依存関係をフェッチしてインストールします(正しいバージョン、正しいプラットフォーム、正しい順序でインストールします)。これは、Linuxパッケージマネージャーでは簡単な作業ですが、Windowsでどのツールがそれを実行できるかわかりません。依存関係のURLのリストからWindowsインストーラーを生成できる簡単なツールはありますか1

1 お気づきかもしれませんが、私がリストしたライブラリのほとんどはpip / easy_installでインストールできませんが、独自のインストーラーを実行し、いくつかのファイルと環境変数を変更する必要があります。

4

3 に答える 3

2

npackdが存在しますhttp://code.google.com/p/windows-package-manager/ ここから実行するか、distribute(python 3.x)またはsetuptools(python 2.x)をeasy_install、場合によってはpip(donそれがWindowsの互換性かどうかはわかりません)。しかし、PyQtとそれはpip / easy_installの珍しいセットアップであるため、npackdを選択します(setup.pyの代わりにconfigure.pyを使用すると、うまく機能しません)。ただし、それらの一部に使用するには、npackd用に独自のリポジトリを作成する必要があります。私はそれでPythonライブラリに合計で貢献しているものを忘れています。

于 2012-07-27T19:03:16.920 に答える
1

AFAIKにはツールがないので(そして私はあなたがグーグルで検索したと思います)、あなたは自分でそれを作らなければなりません。

適切なライブラリバージョンを取得するのは簡単なようです。Pythonのftplibを使用すると、すべてのライブラリに適切なインストーラーを取得できます。どのバージョンがユーザーのPythonと互換性があるかをどのようにして知ることができますか?ダウンロードURLのさまざまなリストを、それぞれ異なるPythonバージョンごとに保存できます(この方法は頭から離れており、おそらくより良い方法があります。単純で機能する場合はそれほど重要ではありません)。

各インストーラーを実行する方法を理解したら、インストーラースクリプトをpy2exeし、それを使用してプログラム自体をフェッチすることもできます。


編集

いくつかの考慮事項

私が投稿したときに頭に浮かんだことがいくつかあります。まず、いくつかの擬似コード(とにかく、どのようにアプローチするか)

#first, we check modules
try:
    import numpy
except ImportError:
    #flag numpy for installation
#lather, rinse repeat for all dependencies

#next we check version compatibility -- note that if a library version you need 
#is not backwards-compatible, you're in DLL hell, and there is little we can do.
<insert version-checking code here>

#once you have your unavailable dependencies, you install them
import ftplib
<all your file-downloading here>

#now you install. sorry I can't help you here.

ユーティリティを再利用可能にするためにできることがいくつかあります-

  • すべてのURLリスト、最小バージョン番号、必要なライブラリ名などを構成ファイルに入れます
  • インストーラーのセットアップに役立つスクリプトを作成する
  • Py2exeインストーラーメーカースクリプト
  • それを売る
  • さらに良いことに、GPLの下でそれをリリースして、私たち全員があなたの労働の成果を楽しむことができるようにします。
于 2012-07-27T18:29:01.333 に答える
0

私はあなたと同様のニーズを持っていますが、さらに、パッケージ化されたアプリケーションが複数のプラットフォームで動作する必要があります。私は現在、現在利用可能なソリューションを調査しています。いくつかの興味深いソリューションを以下に示します。

請求書を満たすものが見つかったら、ここで更新します。

于 2013-08-06T20:59:36.790 に答える