2013-10-17 22 views
10

私はいくつかの開発者がFabricを簡単に実行できるように、簡単なシェルスクリプトを作成しています。 (私もPythonを初めて使います。)Fabricをインストールするにはpipをインストールし、pipをインストールするにはsetuptoolsをインストールします。Pythonのsetuptoolsがインストールされているかどうかを確認する方法はありますか?

setuptoolsがすでにインストールされているかどうかを簡単に検出する方法はありますか?スクリプトを複数回実行できるようにしたいのですが、すでに完了しているものはスキップします。今のところ、ez_setup.pyを2回連続して実行すると、2回目にエラーが発生します。

私が持っていたアイデアの1つは、/ Scriptsフォルダのeasy_installスクリプトを探すことでした。 sys.executableを使ってPythonのルートを推測してから、実行可能ファイルの名前をスワップします。しかし、私はもう少しエレガントな(そして多分OSに優しい)何かを探しています。助言がありますか?

+1

を試してみてくださいそこにはありません:) –

答えて

8

これは素晴らしいことではありませんが、うまくいくでしょう。

簡単なPythonスクリプトは、チェック

を行うことができます
import sys 
try: 
     import setuptools 
except ImportError: 
     sys.exit(1) 
else: 
     sys.exit(0) 

それからちょうどチェックし、それは

2

あなたはeasy_installをを確認することができ、次のコマンドラインを実行して、setuptoolsのコマンドを呼び出し元のスクリプトでの終了コードです:

which easy_install 
#finds the path to easy_install if it exists 

less path/to/easy_install 
#where path/to/easy_install is the output from the above command 
#this outputs your easy_install script which will mention the version of setuptools 

easy_install/setuptoolsバンドルがインストールされている場合、上記の2番目のコマンドの出力はおそらく次のようになります。

#EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install' 
16

このコマンドを入力してください。

$ pip list 

pipsetuptoolsの両方のバージョンを返します。それだけで次に行く場合

import easy_install 

:これも動作しない場合はそれ以外の場合だけでIDLEに次のコードを実行し

$ which easy_install 
+0

'pip list'は機能しますか?私のシステムでは、コマンドにエラーが見つかりませんでした。また、編集ヘルプでMarkdown構文をチェックして、編集に使用できるオプションを確認してください。 – Sithsu

+0

私は古いピップを実行しているようだ。 'pip list'はpip 1.3で利用できます。 http://stackoverflow.com/questions/6600878/find-all-packages-installed-with-easy-install-pip – Sithsu

+0

はい、動作します。インストール可能なパッケージであれば、virtualenv内のsetuptoolsのバージョンを知りたいかもしれません。 – HugoFS

4

てみてください、

$ pip install pil 

てみてください私はそれがインストールされていると思う。

Error: invalid syntax 

それがインストールされていない可能性があります。 私はピップをテストしたのでこれを知っています。 また、pipがプリインストールされているかどうかを確認するには、import pipをチェックしてください。 :)

0

新しいバージョンのPythonがプリインストールされています。それはだ -

pip3 list 

は、それがどのモジュールがインストールされているかどうかをテストするには、私のため

3

をインストールされた識別するのに十分だった、それはあなたの方法を、エラーをスローした場合、easy_installををインポートしようと、この

>>> import sys 
>>> 'setuptools' in sys.modules.keys() 
False 
関連する問題