2012-03-12 5 views
3

を存在する場合、私は、Python 2.6.1と私の同僚のマックOSXのいくつかのためのユーティリティスクリプトを書かれているチェック。のPython 2.6.1:輸入が

try: 
    import argparse 
except ImportError: 
    print "argparse module missing: Please run 'sudo easy_install argparse'" 
    sys.exit(1) 

私はこれを処理するよりエレガントな方法があるかなり確信している:彼らはすべての必要なモジュールがインストールされていないので、私は、try-除く輸入句を持っています。何か案は?

答えて

7

あなたの最高のショットは、必要なすべてのモジュールを使用してPythonコードを凍結し、バイナリとしてそれを配布することです。それはあなたが

は、Mac OS Xのためのいくつかの凍結ツールがあります互換性のglibcのバージョンを持っていることを確認してください、しかし、Linux上で、WindowsとLinuxで私のために働いたが、私はそれらを使用していません。私はWindowsとLinuxのツールを使用していました。詳細は

http://hackerboss.com/how-to-distribute-commercial-python-applications/

1

これは実際にそれを行うための最善の方法です。同じアプローチは、例えば、マシンにインストールされているものに応じて、異なるJSONライブラリを選択するために使用されます。一般的なイディオムである

try: 
    import simplejson as json 
except ImportError: 
    import json 
+0

、そのような事はそれだけで、このような構文のユースケースを与えることだった彼の例 –

+0

に似唯一の排他的な場合のために、ではないargparseのために行うことができます

チェックアウトこのリンクを、これを行う正しい方法であるとの主張を支持する。私はそれがスケーラブルである原因、それはちょうど、非常に少数の例 – StefanoP

4

いますが、依存関係のインストール(example)を自動化するsetuptoolspipを使用することができます。

+0

最善の解決策を適用することを知っており、ユーザーは右、それはまだ、root権限が必要です –

+0

を逃すいくつかのモジュールの場合に容易に住んで作ることができますか? –

+0

デフォルトでは(システム全体でパッケージをインストールする場合)yesですが、[virtualenv](http://www.virtualenv.org/)を使用して、ホームフォルダに完全に分離されたPython環境を作成し、そこでパッケージをインストールすることができます。 –