Ich schreibe ein schnelles Shell-Skript, um einigen Entwicklern die Ausführung von Fabric zu erleichtern. (Ich bin auch neu in Python.) Ein Teil der Installation von Fabric besteht darin, pip zu installieren, und ein Teil der Installation von pip besteht darin, setuptools zu installieren.
Gibt es eine einfache Möglichkeit, festzustellen, ob setuptools bereits installiert ist? Ich möchte es möglich machen, das Skript mehrmals auszuführen, und es wird alles übersprungen, was es bereits getan hat. Wenn Sie ez_setup.py zweimal hintereinander ausführen, wird beim zweiten Mal ein Fehler angezeigt.
Eine Idee, die ich hatte, war, nach den easy_install-Skripts im Ordner/Scripts zu suchen. Ich kann die Python-Wurzel mit sys.executable erraten und dann den Namen der ausführbaren Datei selbst austauschen. Aber ich suche etwas eleganteres (und vielleicht Cross-OS-freundlich). Irgendwelche Vorschläge?
Das ist nicht so toll, aber es wird funktionieren.
Ein einfaches Python-Skript kann die Überprüfung durchführen
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.")
Dann überprüfen Sie einfach den Beendigungscode im aufrufenden Skript
Versuchen Sie es mit diesem Befehl.
$ pip list
Es gibt die Versionen von pip
und setuptools
zurück. Ansonsten versuchen Sie es mit
$ pip install pil
Wenn dies auch nicht funktioniert, versuchen Sie es mit
$ which easy_install
Führen Sie einfach den folgenden Code in IDLE aus:
import easy_install
Wenn es nur zur nächsten Zeile geht, denke ich, dass es installiert ist ... Wenn es sagt:
Error: invalid syntax
Dann ist es wahrscheinlich nicht installiert. Ich weiß das, weil ich pip damit getestet habe. Außerdem überprüfe einfach import pip
, ob pip vorinstalliert ist. :)
Versuchen Sie dies, um zu testen, ob ein Modul installiert ist
>>> import sys
>>> 'setuptools' in sys.modules.keys()
False
sie können nach easy_install und setuptools suchen, indem Sie die folgenden Befehlszeilenbefehle ausführen:
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
Wenn das Paket easy_install/setuptools installiert ist, wird die Ausgabe des zweiten Befehls oben möglicherweise wie folgt lauten:
#EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install'
Es ist mit neuen Python-Versionen vorinstalliert.
pip3 list
war genug zu erkennen, dass es für mich installiert war
Daraufhin wird die Version Ihrer Setuptools angezeigt, sofern diese bereits installiert sind
$python -c "import sys; import setuptools; print(setuptools.version.__version__)"