一部の開発者がFabricを簡単に実行できるように、簡単なシェルスクリプトを作成しています。 (私もPythonが初めてです。)Fabricのインストールの一部はpipのインストールであり、pipのインストールの一部はsetuptoolsのインストールです。
Setuptoolsがすでにインストールされているかどうかを検出する簡単な方法はありますか?スクリプトを複数回実行できるようにしたいのですが、既に実行されたものはすべてスキップします。現状では、ez_setup.pyを2回続けて実行すると、2回目の失敗が発生します。
私が考えていた1つのアイデアは、/ Scriptsフォルダーの下にあるeasy_installスクリプトを探すことでした。 sys.executableを使用してPythonルートを推測し、実行可能ファイル名自体を交換します。助言がありますか?
これは素晴らしいことではありませんが、機能します。
簡単なpythonスクリプトはチェックを行うことができます
import sys
try:
import setuptools
except ImportError:
sys.exit(1)
else:
sys.exit(0)
OR
try:
import setuptools
except ImportError:
print("Not installed.")
else:
print("Installed.")
次に、呼び出し元のスクリプトで終了コードを確認します
このコマンドで試してください。
$ pip list
pip
とsetuptools
の両方のバージョンを返します。それ以外の場合は試してください
$ pip install pil
これも機能しない場合は、試してください
$ which easy_install
次のコードをIDLEで実行するだけです。
import easy_install
次の行に進むだけであれば、インストールされていると思います。それが言う場合:
Error: invalid syntax
その後、おそらくインストールされません。私はこれを使ってpipをテストしたのでこれを知っています。また、import pip
pipがプリインストールされているかどうかを確認します。 :)
モジュールがインストールされているかどうかをテストするには、これを試してください
>>> import sys
>>> 'setuptools' in sys.modules.keys()
False
次のコマンドラインコマンドを実行して、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'
Pythonの新しいバージョンがプリインストールされています。
pip3 list
それが私のためにインストールされたことを識別するのに十分でした
既にインストールされている場合、これはセットアップツールのバージョンを表示します
$python -c "import sys; import setuptools; print(setuptools.version.__version__)"