Получение сведений о пакете Python
Область применения: SQL Server 2017 (14.x) и более поздних версий Управляемый экземпляр SQL Azure
В этой статье описывается, как получить сведения об установленных пакетах Python, включая версии и расположения установки, в Службах машинного обучения SQL Server и кластерах больших данных. Примеры сценариев Python показывают, как получить сведения о пакете, например путь установки и версия.
В этой статье описывается, как получить сведения об установленных пакетах Python, включая версии и расположения установки, в Службах машинного обучения SQL Server. Примеры сценариев Python показывают, как получить сведения о пакете, например путь установки и версия.
В этой статье описывается, как получить сведения об установленных пакетах Python, включая версии и расположения установки, в Службах машинного обучения управляемого экземпляра SQL Azure. Примеры сценариев Python показывают, как получить сведения о пакете, например путь установки и версия.
Расположение библиотеки Python по умолчанию
При установке машинного обучения с помощью SQL Server на уровне экземпляра создается отдельная библиотека пакетов для каждого устанавливаемого языка. Библиотека экземпляров является защищенной папкой, зарегистрированной в SQL Server.
Все скрипты или код, выполняемые в базе данных на SQL Server, должны загружать функции из библиотеки экземпляров. SQL Server не может получить доступ к пакетам, установленным в других библиотеках. Это относится и к удаленным клиентам: любой код Python, выполняющийся в контексте вычислений сервера, может использовать только пакеты, установленные в библиотеке экземпляров. Для защиты серверных ресурсов библиотека экземпляров по умолчанию может быть изменена только администратором компьютера.
Путь по умолчанию к двоичным файлам для Python:
C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES
Предполагается, что экземпляр SQL по умолчанию — MSSQLSERVER. Если SQL Server устанавливается как определяемый пользователем именованный экземпляр, вместо него используется указанное имя.
Путь по умолчанию к двоичным файлам для Python:
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\PYTHON_SERVICES
Предполагается, что экземпляр SQL по умолчанию — MSSQLSERVER. Если SQL Server устанавливается как определяемый пользователем именованный экземпляр, вместо него используется указанное имя.
Включите внешние скрипты, выполнив следующие команды SQL:
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH override;
Внимание
В Управляемом экземпляре SQL Azure выполнение команд sp_configure и RECONFIGURE приводит к перезагрузке сервера SQL для активации параметров RG. В результате сервер будет недоступен в течение нескольких секунд.
Выполните приведенную ниже инструкцию SQL, чтобы проверить библиотеку по умолчанию для текущего экземпляра. Этот пример возвращает список папок, включенных в переменную sys.path
Python. Список содержит текущий каталог и путь к стандартной библиотеке.
EXECUTE sp_execute_external_script
@language =N'Python',
@script=N'import sys; print("\n".join(sys.path))'
Дополнительные сведения о переменной sys.path
и о том, как она используется для задания пути поиска для модулей, см. в разделе Путь поиска модуля.
Примечание.
Не пытайтесь установить пакеты Python непосредственно в библиотеке пакетов SQL с помощью pip или аналогичных методов. Вместо этого используйте sqlmlutils для установки пакетов в экземпляре SQL. Дополнительные сведения см. в статье Установка пакетов Python с помощью sqlmlutils.
Пакеты Microsoft Python по умолчанию
Приведенные ниже пакеты Python устанавливаются вместе со Службами машинного обучения SQL Server, если во время установки выбран компонент Python.
Пакеты | Версия | Description |
---|---|---|
revoscalepy | 9.4.7 | Используется для удаленных контекстов вычислений, потоковой передачи, параллельного выполнения функций rx для импорта и преобразования, моделирования, визуализации и анализа данных. |
microsoftml | 9.4.7 | Добавляет алгоритмы машинного обучения в Python. |
Сведения о том, какая версия Python включена, приведены в разделе Версии Python и R.
Обновление компонентов
По умолчанию пакеты Python обновляются с помощью пакетов обновления и накопительных пакетов обновления. Дополнительные пакеты и обновления полных версий основных компонентов Python возможны только при обновлении продукта.
Пакеты Python с открытым кодом по умолчанию
При выборе языка Python во время установки устанавливается дистрибутив Anaconda 4.2 (через Python 3.5). В дополнение к библиотекам кода Python стандартная установка включает примеры данных, модульные тесты и примеры сценариев.
Внимание
Никогда не следует вручную перезаписывать версию Python, установленную программой установки SQL Server, более новыми версиями в Интернете. Пакеты Microsoft Python основаны на конкретных версиях Anaconda. Изменение установки может привести к дестабилизации.
Просмотр всех установленных пакетов Python
Приведенный ниже пример сценария отображает список всех пакетов Python, установленных в экземпляре SQL Server.
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)));
Поиск одного пакета Python
Если вы установили пакет Python и хотите убедиться, что он доступен для конкретного экземпляра SQL Server, можно выполнить хранимую процедуру, которая ищет этот пакет и отображает соответствующие сообщения.
Например, следующий код ищет пакет scikit-learn
.
Если пакет найден, код выводит версию пакета.
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")
'
Результат:
STDOUT message(s) from external script: Package scikit-learn is version 0.20.2
Просмотр версии Python
Следующий пример кода возвращает версию Python, установленную в экземпляре SQL Server.
EXECUTE sp_execute_external_script
@language = N'Python',
@script = N'
import sys
print(sys.version)
'