Abrufen von Paketinformationen für Python
Gilt für: SQL Server 2017 (14.x) und höher Azure SQL Managed Instance
In diesem Artikel erfahren Sie, wie Sie in Machine Learning Services in SQL Server und auf Big Data-Clustern Informationen zu installierten Python-Paketen abrufen, einschließlich der Versionen und dem Speicherort der Installation. Dabei wird anhand von Python-Beispielskripts veranschaulicht, wie Sie Paketinformationen, z. B. Installationspfad und Version, auflisten können.
In diesem Artikel erfahren Sie, wie Sie Informationen zu installierten Python-Paketen, einschließlich Versionsnummern und Installationsspeicherorten, in SQL Server Machine Learning Services erhalten. Dabei wird anhand von Python-Beispielskripts veranschaulicht, wie Sie Paketinformationen, z. B. Installationspfad und Version, auflisten können.
In diesem Artikel erfahren Sie, wie Sie Informationen zu installierten Python-Paketen, einschließlich Versionsnummern und Installationsspeicherorten, in Azure SQL Managed Instance Machine Learning Services erhalten. Dabei wird anhand von Python-Beispielskripts veranschaulicht, wie Sie Paketinformationen, z. B. Installationspfad und Version, auflisten können.
Standardspeicherort der Python-Bibliothek
Wenn Sie Machine Learning-Funktionen mit SQL Server installieren, wird eine einzelne Paketbibliothek auf Instanzebene für jede von Ihnen installierte Sprache erstellt. Die Instanzbibliothek ist ein gesicherter Ordner, der bei SQL Server registriert ist.
Alle Skripts oder Codes, die datenbankintern in SQL Server ausgeführt werden, müssen Funktionen aus der Instanzbibliothek laden. SQL Server kann nicht auf Pakete zugreifen, die in anderen Bibliotheken installiert sind. Dies gilt auch für Remoteclients: Jeder Python-Code, der im Servercomputekontext ausgeführt wird, kann nur Pakete verwenden, die in der Instanzbibliothek installiert sind. Zum Schutz der Serverressourcen kann die Standardinstanzbibliothek nur von einem Computeradministrator geändert werden.
Der Standardpfad der Binärdateien für Python lautet:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES
Dabei wird von der standardmäßigen SQL-Instanz, MSSQLSERVER, ausgegangen. Wenn SQL Server als benutzerdefinierte benannte Instanz installiert wird, wird stattdessen der angegebene Name verwendet.
Der Standardpfad der Binärdateien für Python lautet:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES
Dabei wird von der standardmäßigen SQL-Instanz, MSSQLSERVER, ausgegangen. Wenn SQL Server als benutzerdefinierte benannte Instanz installiert wird, wird stattdessen der angegebene Name verwendet.
Aktivieren Sie externe Skripts, indem Sie die folgenden SQL-Befehle ausführen:
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH override;
Wichtig
In Azure SQL Managed Instance löst die Ausführung der Befehle sp_configure und RECONFIGURE einen Neustart von SQL Server aus, damit die RG-Einstellungen übernommen werden können. Dies kann zu einer Nichtverfügbarkeit von wenigen Sekunden führen.
Sie können die folgende SQL-Anweisung ausführen, um die Standardbibliothek für die aktuelle Instanz zu überprüfen. In diesem Beispiel wird die Liste der in der Python-Variablen sys.path
enthaltenen Ordner zurückgegeben. Die Liste enthält das aktuelle Verzeichnis und den Pfad der Standardbibliothek.
EXECUTE sp_execute_external_script
@language =N'Python',
@script=N'import sys; print("\n".join(sys.path))'
Weitere Informationen zur Variablen sys.path
, und wie sie zum Festlegen des Suchpfads für Module des Interpreters verwendet wird, finden Sie im Abschnitt zum Suchpfad für das Modul.
Hinweis
Versuchen Sie nicht, Python-Pakete direkt in der SQL-Paketbibliothek mithilfe von pip oder ähnlichen Methoden zu installieren. Verwenden Sie stattdessen sqlmlutils, um Pakete in einer SQL-Instanz zu installieren. Weitere Informationen finden Sie unter Installieren von Python-Paketen mit sqlmlutils.
Microsoft Python-Standardpakete
Wenn Sie bei der Installation die Microsoft Python-Funktion auswählen, werden die folgenden Python-Pakete mit SQL Server Machine Learning Services installiert.
Pakete | Version | BESCHREIBUNG |
---|---|---|
revoscalepy | 9.4.7 | Wird für Remotecomputekontexte, Streaming, parallele Ausführung von RX-Funktionen für Datenimport und Transformation, Modellierung, Visualisierung und Analyse verwendet. |
microsoftml | 9.4.7 | Fügt Machine Learning-Algorithmen in Python hinzu. |
Informationen zu der enthaltenen Python-Version finden Sie unter Python- und R-Pakete.
Komponentenupgrades
Python-Pakete werden standardmäßig durch Service Packs und kumulative Updates aktualisiert. Weitere Pakete und vollständige Versionsupgrades von Python-Kernkomponenten sind nur über Produktupgrades möglich.
Open-Source-Standardpakete für Python
Wenn Sie während der Installation als Programmiersprache „Python“ auswählen, wird die Anaconda 4.2-Distribution (über Python 3.5) installiert. Zusätzlich zu den Python-Codebibliotheken umfasst die Standardinstallation Beispieldaten, Komponententests und Beispielskripts.
Wichtig
Überschreiben Sie die vom SQL Server-Setup installierte Version von Python niemals manuell mit neueren, online verfügbaren Versionen. Python-Pakete von Microsoft basieren auf bestimmten Versionen von Anaconda. Die Änderung Ihrer Installation könnte diese instabil machen.
Auflisten aller installierten Python-Pakete
Das folgende Beispielskript zeigt eine Liste aller in der SQL Server-Instanz installierten Python-Pakete an.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import pkg_resources
import pandas
OutputDataSet = pandas.DataFrame(sorted([(i.key, i.version) for i in pkg_resources.working_set]))'
WITH result sets((Package NVARCHAR(128), Version NVARCHAR(128)));
Suchen eines einzelnen Python-Pakets
Wenn Sie ein Python-Paket installiert haben und sicherstellen möchten, dass es für eine bestimmte SQL Server-Instanz verfügbar ist, können Sie eine gespeicherte Prozedur ausführen, um nach dem Paket zu suchen und Meldungen zurückzugeben.
Beispielsweise kann mit dem folgenden Code nach dem scikit-learn
-Paket gesucht werden.
Wenn das Paket gefunden wird, gibt der Code die Paketversion aus.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import pkg_resources
pkg_name = "scikit-learn"
try:
version = pkg_resources.get_distribution(pkg_name).version
print("Package " + pkg_name + " is version " + version)
except:
print("Package " + pkg_name + " not found")
'
Ergebnis:
STDOUT message(s) from external script: Package scikit-learn is version 0.20.2
Anzeigen der Python-Version
Im folgenden Beispielcode wird die Version der in der SQL Server-Instanz installierten Python-Version zurückgegeben.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import sys
print(sys.version)
'