Delen via


Python-pakketgegevens ophalen

Van toepassing op: SQL Server 2017 (14.x) en latere versies van Azure SQL Managed Instance

In dit artikel wordt beschreven hoe u informatie krijgt over geïnstalleerde Python-pakketten, waaronder versies en installatielocaties, op Machine Learning Services op SQL Server en op Big Data-clusters. Voorbeeldscripts van Python laten zien hoe u pakketgegevens kunt vermelden, zoals het installatiepad en de versie.

In dit artikel wordt beschreven hoe u informatie krijgt over geïnstalleerde Python-pakketten, waaronder versies en installatielocaties, op SQL Server Machine Learning Services. Voorbeeldscripts van Python laten zien hoe u pakketgegevens kunt vermelden, zoals het installatiepad en de versie.

In dit artikel wordt beschreven hoe u informatie krijgt over geïnstalleerde Python-pakketten, waaronder versies en installatielocaties, op Azure SQL Managed Instance Machine Learning Services. Voorbeeldscripts van Python laten zien hoe u pakketgegevens kunt vermelden, zoals het installatiepad en de versie.

Standaardlocatie van Python-bibliotheek

Wanneer u machine learning installeert met SQL Server, wordt er één pakketbibliotheek gemaakt op exemplaarniveau voor elke taal die u installeert. De exemplaarbibliotheek is een beveiligde map die is geregistreerd bij SQL Server.

Alle scripts of code die in de database op SQL Server worden uitgevoerd, moeten functies uit de exemplaarbibliotheek laden. SQL Server heeft geen toegang tot pakketten die zijn geïnstalleerd in andere bibliotheken. Dit geldt ook voor externe clients: elke Python-code die wordt uitgevoerd in de server-rekencontext, kan alleen pakketten gebruiken die zijn geïnstalleerd in de exemplaarbibliotheek. Als u serverassets wilt beveiligen, kan de standaardexemplarenbibliotheek alleen worden gewijzigd door een computerbeheerder.

Het standaardpad van de binaire bestanden voor Python is:

C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES

Er wordt van uitgegaan dat het standaard SQL-exemplaar MSSQLSERVER is. Als SQL Server is geïnstalleerd als een door de gebruiker gedefinieerde benoemde instantie, wordt in plaats daarvan de opgegeven naam gebruikt.

Het standaardpad van de binaire bestanden voor Python is:

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES

Er wordt van uitgegaan dat het standaard SQL-exemplaar MSSQLSERVER is. Als SQL Server is geïnstalleerd als een door de gebruiker gedefinieerde benoemde instantie, wordt in plaats daarvan de opgegeven naam gebruikt.

Schakel externe scripts in door de volgende SQL-opdrachten uit te voeren:

sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH override;

Belangrijk

Op een Azure SQL Managed Instance leidt het uitvoeren van de opdrachten sp_configure en RECONFIGURE tot een herstart van de SQL-server, zodat de RG-instellingen van kracht worden. Dit kan een paar seconden onbeschikbaarheid veroorzaken.

Voer de volgende SQL-instructie uit als u de standaardbibliotheek voor het huidige exemplaar wilt controleren. In dit voorbeeld wordt de lijst met mappen geretourneerd die zijn opgenomen in de Python-variabele sys.path . De lijst bevat de huidige map en het standaardbibliotheekpad.

EXECUTE sp_execute_external_script
  @language =N'Python',
  @script=N'import sys; print("\n".join(sys.path))'

Zie sys.path van de interpreter voor meer informatie over de variabele en hoe deze wordt gebruikt om het zoekpad van de interpreter voor modules in te stellen.

Opmerking

Probeer Python-pakketten niet rechtstreeks in de SQL-pakketbibliotheek te installeren met behulp van pip of vergelijkbare methoden. Gebruik in plaats daarvan sqlmlutils om pakketten in een SQL-exemplaar te installeren. Zie Python-pakketten installeren met sqlmlutils voor meer informatie.

Standaard Microsoft Python-pakketten

De volgende Microsoft Python-pakketten worden geïnstalleerd met SQL Server Machine Learning Services wanneer u de Python-functie selecteert tijdens de installatie.

Pakketten Versie Description
revoscalepy 9.4.7 Wordt gebruikt voor externe rekencontexten, streaming, parallelle uitvoering van rxfuncties voor gegevensimport en transformatie, modellering, visualisatie en analyse.
microsoftml 9.4.7 Voegt machine learning-algoritmen toe in Python.

Zie Python- en R-versies voor meer informatie over welke versie van Python is opgenomen.

Onderdelenupgrades

Python-pakketten worden standaard vernieuwd via servicepacks en cumulatieve updates. Aanvullende pakketten en volledige versie-upgrades van kernonderdelen van Python zijn alleen mogelijk via productupgrades.

Standaard opensource Python-pakketten

Wanneer u de python-taaloptie selecteert tijdens de installatie, wordt Anaconda 4.2-distributie (via Python 3.5) geïnstalleerd. Naast Python-codebibliotheken bevat de standaardinstallatie voorbeeldgegevens, eenheidstests en voorbeeldscripts.

Belangrijk

U moet de versie van Python die door SQL Server Setup is geïnstalleerd, nooit handmatig overschrijven met nieuwere versies op internet. Microsoft Python-pakketten zijn gebaseerd op specifieke versies van Anaconda. Als u de installatie wijzigt, kan deze worden gedestabiliseerd.

Alle geïnstalleerde Python-pakketten weergeven

In het volgende voorbeeldscript wordt een lijst weergegeven met alle Python-pakketten die zijn geïnstalleerd in het SQL Server-exemplaar.

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)));

Eén Python-pakket zoeken

Als u een Python-pakket hebt geïnstalleerd en er zeker van wilt zijn dat het beschikbaar is voor een bepaald SQL Server-exemplaar, kunt u een opgeslagen procedure uitvoeren om naar het pakket te zoeken en berichten te retourneren.

Met de volgende code wordt bijvoorbeeld gezocht naar het scikit-learn pakket. Als het pakket wordt gevonden, print de code de pakketversie.

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")
'

Resultaat:

STDOUT message(s) from external script: Package scikit-learn is version 0.20.2

De versie van Python weergeven

De volgende voorbeeldcode retourneert de versie van Python die is geïnstalleerd in het exemplaar van SQL Server.

EXECUTE sp_execute_external_script
  @language = N'Python',
  @script = N'
import sys
print(sys.version)
'

Volgende stappen