2013-10-17 15 views
10

Ich schreibe ein schnelles Shell-Skript, um einigen unserer Entwickler die Ausführung von Fabric zu erleichtern. (Ich bin auch neu in Python.) Teil der Installation von Fabric ist die Installation von Pip, und ein Teil der Installation von Pip installiert Setuptools.Wie kann ich feststellen, ob Python setuptools installiert ist?

Gibt es einen einfachen Weg festzustellen, ob setuptools bereits installiert ist? Ich möchte es möglich machen, das Skript mehrere Male auszuführen, und alles, was es bereits getan hat, überspringen. Wie es jetzt aussieht, wenn Sie ez_setup.py zweimal nacheinander ausführen, erhalten Sie beim zweiten Mal einen Fehler.

Eine Idee, die ich hatte, war, nach den easy_install-Skripten im Ordner/Scripts zu suchen. Ich kann den Python-Stamm mit sys.executable erraten und dann den Namen der ausführbaren Datei selbst austauschen. Aber ich suche etwas eleganteres (und vielleicht OS-freundliches). Irgendwelche Vorschläge?

+1

Try easy_install zu importieren, wenn es einen Fehler Weg führt - es ist nicht da :) –

Antwort

8

Das ist nicht großartig, aber es wird funktionieren.

Ein einfacher Python-Skript kann

import sys 
try: 
     import setuptools 
except ImportError: 
     sys.exit(1) 
else: 
     sys.exit(0) 

den Scheck tun überprüfen Dann einfach es ist Exit-Code in dem aufrufende Skript

2

Sie für easy_install und Setuptools Zeilenbefehle, indem Sie die folgenden Befehls überprüfen:

Wenn das Bundle easy_install/setuptools installiert ist, wird Ihre Ausgabe des zweiten Befehls oben wahrscheinlich etwa so lauten:

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

Versuchen Sie es mit diesem Befehl.

$ pip list 

Es gibt die Versionen von pip und setuptools. Ansonsten versuchen mit

$ pip install pil 

Wenn dies auch nicht funktioniert, dann versuchen, mit

$ which easy_install 
+0

Funktioniert 'pip list'? In meinem System hat das Geben eines Befehls keinen Fehler gefunden. Überprüfen Sie auch die Markdown-Syntax in der Bearbeitungshilfe, um zu sehen, welche Optionen für die Bearbeitung verfügbar sind. – Sithsu

+0

Scheint, dass ich einen älteren Pip laufen lasse. 'pip list' ist mit pip 1.3 verfügbar. http://stackoverflow.com/questions/6600878/find-all-packages-installed-with-easy-install-pip – Sithsu

+0

Ja, es funktioniert. Da es sich um ein installierbares Paket handelt, möchten Sie vielleicht die Version von setuptools in Ihrem virtualenv kennen. – HugoFS

4

einfach den folgenden Code in IDLE laufen:

import easy_install 

Wenn es geht einfach auf die nächste Linie, ich denke, es ist installiert. Wenn sie sagt:

Error: invalid syntax 

Dann wird es wahrscheinlich nicht installiert. Ich weiß das, weil ich Pip damit getestet habe. Überprüfen Sie auch import pip, um zu sehen, ob Pip vorinstalliert ist. :)

0

Es ist mit neuen Versionen von Python vorinstalliert.

pip3 list 

war genug, um es installiert zu identifizieren, wurde für mich

3

Um zu testen, ob ein Modul installiert ist, diese versuchen

>>> import sys 
>>> 'setuptools' in sys.modules.keys() 
False 
Verwandte Themen