Instalación de un entorno de ejecución personalizado de Python para SQL Server
Se aplica a: SQL Server 2019 (15.x)
Obtenga información sobre cómo instalar un entorno de ejecución personalizado de Python para ejecutar scripts externos de Python con SQL Server en:
- Windows
- Ubuntu Linux
- Red Hat Enterprise Linux (RHEL)
- SUSE Linux Enterprise Server (SLES)
El entorno de ejecución personalizado puede ejecutar scripts de aprendizaje automático y usa Extensiones de lenguaje de SQL Server.
Use la versión propia del entorno de ejecución de Python con SQL Server, en lugar de la versión del entorno de ejecución predeterminada instalada con SQL Server Machine Learning Services.
A partir de SQL Server 2022 (16.x), los entornos de ejecución de R, Python y Java ya no se instalan con el programa de instalación de SQL. En su lugar, instale los paquetes y entornos de ejecución personalizados de Python que quiera. Para obtener más información, consulte Instalación de SQL Server 2022 Machine Learning Services (Python y R) en Windows o Instalación de SQL Server Machine Learning Services (Python y R) en Linux.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
- Si usa una instancia de SQL Server existente, instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019.
Instalación de Extensiones de lenguaje
Nota
Si instaló Machine Learning Services en SQL Server 2019, las Extensiones de lenguaje ya están instaladas y puede omitir este paso.
Siga los pasos que aparecen a continuación para instalar Extensiones de lenguaje de SQL Server, que se usa para el entorno de ejecución personalizado de Python.
Inicie el asistente para la instalación de SQL Server 2019.
En la pestaña Instalación, seleccione Nueva instalación independiente de SQL Server o agregar características a una instalación existente.
En la página Selección de características , seleccione estas opciones:
Servicios de Motor de base de datos
Para usar las extensiones de lenguaje con SQL Server, debe instalar una instancia del motor de base de datos. Puede usar una instancia nueva o una existente.
Machine Learning Services y extensiones de lenguaje
Seleccione Machine Learning Services y extensiones de lenguaje. No seleccione Python, ya que va a instalar el entorno de ejecución de Python personalizado más adelante.
En la página Listo para instalar, confirme que estas selecciones se han realizado y haga clic en Instalar.
- Servicios de Motor de base de datos
- Machine Learning Services y extensiones de lenguaje
Una vez que se completa la instalación, reinicie la máquina si se le pide hacerlo.
Importante
Si instala una instancia nueva de SQL Server 2019 con Extensiones de lenguaje, instale la actualización acumulativa (CU) 3 o posterior antes de ir al paso siguiente.
Instalar Python
La extensión del lenguaje Python que se usa para el entorno de ejecución de Python actualmente admite solo Python 3.7. Si quiere usar una versión distinta de Python, siga la instrucción que aparece en el repositorio de GitHub sobre Extensiones de lenguaje de Python para modificar y recompilar la extensión.
Descargue Python 3.7 para Windows y ejecute el programa de instalación en el servidor.
Seleccione Agregar Python 3.7 a la ruta de acceso y, después, Personalizar instalación.
En Características opcionales, deje los valores predeterminados y seleccione Siguiente.
Seleccione Instalar para todos los usuarios y anote la ubicación de instalación.
Seleccione Instalar.
Instalación de pandas
Instale el paquete pandas para Python desde un símbolo del sistema con privilegios elevados (Ejecutar como administrador):
python.exe -m pip install pandas
Concesión de acceso a la carpeta de Python
Ejecute los comandos icacls siguientes desde un símbolo del sistema con privilegios elevados nuevo para conceder acceso de LECTURA Y EJECUCIÓN a la ubicación de la instalación de Python al servicio SQL Server Launchpad y al SID S-1-15-2-1 (ALL_APPLICATION_PACKAGES).
En los ejemplos siguientes se usa la ubicación de instalación de Python como C:\Program Files\Python37
. Si la ubicación es diferente, cámbiela en el comando.
Conceda permisos al nombre de usuario del servicio SQL Server Launchpad.
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD":(OI)(CI)RX /T
En el caso de una instancia con nombre, el comando será
icacls "C:\Program Files\Python37" /grant "NT Service\MSSQLLAUNCHPAD$SQL01":(OI)(CI)RX /T
para una instancia denominada SQL01.Conceda permisos al SID S-1-15-2-1.
icacls "C:\Program Files\Python37" /grant *S-1-15-2-1:(OI)(CI)RX /T
El comando anterior concede permisos al SID del equipo S-1-15-2-1, que es equivalente a TODOS LOS PAQUETES DE APLICACIONES en una versión en inglés de Windows. Como alternativa, puede usar
icacls "C:\Program Files\Python37" /grant "ALL APPLICATION PACKAGES":(OI)(CI)RX /T
en una versión en inglés de Windows.
Reinicio de SQL Server Launchpad
Siga estos pasos para reiniciar el servicio SQL Server Launchpad.
En Servicios de SQL Server, haga clic con el botón derecho en SQL Server Launchpad (MSSQLSERVER) y seleccione Reiniciar. Si va a usar una instancia con nombre, se mostrará el nombre de la instancia en lugar de (MSSQLSERVER) .
Registro de la extensión del lenguaje
Siga estos pasos para descargar y registrar la extensión del lenguaje Python, que se usa para el entorno de ejecución personalizado de Python.
Descargue el archivo python-lang-extension-windows-release.zip del repositorio de GitHub de Extensiones de lenguaje de SQL Server.
También puede usar la versión de depuración (python-lang-extension-windows-debug.zip) en un entorno de desarrollo o prueba. La versión de depuración proporciona información de registro detallada para investigar los errores y no se recomienda para los entornos de producción.
Use Azure Data Studio para conectarse a la instancia de SQL Server y ejecute el comando de T-SQL siguiente para registrar la extensión del lenguaje Python con CREAR UN LENGUAJE EXTERNO.
Modifique la ruta de acceso de esta instrucción para reflejar la ubicación del archivo ZIP descargado de la extensión del lenguaje (python-lang-extension-windows-release.zip) y la ubicación de la instalación de Python (
C:\\Program Files\\Python37
).CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'C:\path\to\python-lang-extension-windows-release.zip', FILE_NAME = 'pythonextension.dll', ENVIRONMENT_VARIABLES = N'{"PYTHONHOME": "C:\\Program Files\\Python37"}'); GO
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
Nota
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre. Por ejemplo, la instrucción anterior usa myPython.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte Configuración de repositorios para instalar y actualizar SQL Server en Linux.
Actualice el paquete mssql-server a la actualización acumulativa más reciente. Para más información, consulte la sección de actualización de SQL Server en la guía de instalación de SQL Server en Linux.
Instalación de Extensiones de lenguaje
Nota:
Si instaló Machine Learning Services en SQL Server 2019, el paquete mssql-server-extensibility para las Extensiones de lenguaje ya está instalado y puede omitir este paso.
Ejecute los comandos siguientes para instalar Extensiones de lenguaje de SQL Server en Ubuntu Linux, que se usa para el entorno de ejecución personalizado de Python.
Si es posible, ejecute este comando para actualizar los paquetes en el sistema antes de la instalación.
# Install as root or sudo sudo apt-get update
Ubuntu podría no tener la opción de transporte de apt para https. Para realizar la instalación, ejecute este comando.
# Install as root or sudo apt-get install apt-transport-https
Instale mssql-server-extensibility con este comando.
# Install as root or sudo sudo apt-get install mssql-server-extensibility
Instalación de Python 3.7 y pandas
La extensión del lenguaje Python que se usa para el entorno de ejecución de Python actualmente admite solo Python 3.7. Si quiere usar una versión distinta de Python, siga la instrucción que aparece en el repositorio de GitHub sobre Extensiones de lenguaje de Python para modificar y recompilar la extensión.
Ejecute los comandos siguientes para instalar Python 3.7.
# Install python3.7 and the corresponding library: sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.7 python3-pip libpython3.7
Ejecute el comando siguiente para instalar el paquete pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Instalación personalizada de Python
Nota
Si instaló Python 3.7 en la ubicación predeterminada de /usr/lib/python3.7
, puede omitir esta sección y pasar a la sección Registro de la extensión del lenguaje.
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf
.
Abra el archivo con systemctl.
sudo systemctl edit mssql-launchpadd
Inserte el texto siguiente en el archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
que se abre. Establezca el valor de PYTHONHOME en la ruta de instalación personalizada de Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Guarde el archivo y cierre el editor.
A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0
.
Cree el archivo custom-python.conf en
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
En el archivo que se abre, agregue la ruta de acceso a libpython3.7m.so.1.0 de la instalación personalizada de Python.
<path to the python3.7 lib>
Guarde el archivo nuevo y cierre el editor.
Ejecute
ldconfig
y compruebe que se puede cargarlibpython3.7m.so.1.0
; para ello, ejecute los comandos siguientes y compruebe que se pueden encontrar todas las bibliotecas dependientes.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concesión de acceso a la carpeta de Python
Establezca la opción datadirectories
de la sección de extensibilidad del archivo /var/opt/mssql/mssql.conf
en la instalación personalizada de Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registro de la extensión del lenguaje
Siga estos pasos para descargar y registrar la extensión del lenguaje Python, que se usa para el entorno de ejecución personalizado de Python.
Descargue el archivo python-lang-extension-linux-release.zip del repositorio de GitHub de Extensiones de lenguaje de SQL Server.
También puede usar la versión de depuración (python-lang-extension-linux-debug.zip) en un entorno de desarrollo o prueba. La versión de depuración proporciona información de registro detallada para investigar los errores y no se recomienda para los entornos de producción.
Use Azure Data Studio para conectarse a la instancia de SQL Server y ejecute el comando de T-SQL siguiente para registrar la extensión del lenguaje Python con CREAR UN LENGUAJE EXTERNO.
Modifique la ruta de acceso de esta instrucción para reflejar la ubicación del archivo ZIP descargado de la extensión del lenguaje (python-lang-extension-linux-release.zip).
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
Nota
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre. Por ejemplo, la instrucción anterior usa myPython.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte Configuración de repositorios para instalar y actualizar SQL Server en Linux.
Actualice el paquete mssql-server a la actualización acumulativa más reciente. Para más información, consulte la sección de actualización de SQL Server en la guía de instalación de SQL Server en Linux.
Instalación de Extensiones de lenguaje
Nota:
Si instaló Machine Learning Services en SQL Server 2019, el paquete mssql-server-extensibility para las Extensiones de lenguaje ya está instalado y puede omitir este paso.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en Red Hat Enterprise Linux (RHEL), que se usa para el entorno de ejecución personalizado de Python.
# Install as root or sudo
sudo yum install mssql-server-extensibility
Instalación de Python 3.7 y pandas
La extensión del lenguaje Python que se usa para el entorno de ejecución de Python actualmente admite solo Python 3.7. Si quiere usar una versión distinta de Python, siga la instrucción que aparece en el repositorio de GitHub sobre Extensiones de lenguaje de Python para modificar y recompilar la extensión.
Ejecute los comandos siguientes para instalar Python 3.7.
# Install python3.7 and the corresponding library: yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel cd /usr/src wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz tar xzf Python-3.7.9.tgz cd Python-3.7.9 ./configure --enable-optimizations --prefix=/usr make altinstall
Ejecute el comando siguiente para instalar el paquete pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Instalación personalizada de Python
Nota
Si instaló Python 3.7 en la ubicación predeterminada de /usr/lib/python3.7
, puede omitir esta sección y pasar a la sección Registro de la extensión del lenguaje.
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf
.
Abra el archivo con systemctl.
sudo systemctl edit mssql-launchpadd
Inserte el texto siguiente en el archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
que se abre. Establezca el valor de PYTHONHOME en la ruta de instalación personalizada de Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Guarde el archivo y cierre el editor.
A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0
.
Cree el archivo custom-python.conf en
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
En el archivo que se abre, agregue la ruta de acceso a libpython3.7m.so.1.0 de la instalación personalizada de Python.
<path to the python3.7 lib>
Guarde el archivo nuevo y cierre el editor.
Ejecute
ldconfig
y compruebe que se puede cargarlibpython3.7m.so.1.0
; para ello, ejecute los comandos siguientes y compruebe que se pueden encontrar todas las bibliotecas dependientes.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concesión de acceso a la carpeta de Python
Establezca la opción datadirectories
de la sección de extensibilidad del archivo /var/opt/mssql/mssql.conf
en la instalación personalizada de Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registro de la extensión del lenguaje
Siga estos pasos para descargar y registrar la extensión del lenguaje Python, que se usa para el entorno de ejecución personalizado de Python.
Descargue el archivo python-lang-extension-linux-release.zip del repositorio de GitHub de Extensiones de lenguaje de SQL Server.
También puede usar la versión de depuración (python-lang-extension-linux-debug.zip) en un entorno de desarrollo o prueba. La versión de depuración proporciona información de registro detallada para investigar los errores y no se recomienda para los entornos de producción.
Use Azure Data Studio para conectarse a la instancia de SQL Server y ejecute el comando de T-SQL siguiente para registrar la extensión del lenguaje Python con CREAR UN LENGUAJE EXTERNO.
Modifique la ruta de acceso de esta instrucción para reflejar la ubicación del archivo ZIP descargado de la extensión del lenguaje (python-lang-extension-linux-release.zip).
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
Nota
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre. Por ejemplo, la instrucción anterior usa myPython.
Requisitos previos
Antes de instalar un entorno de ejecución personalizado de Python, instale lo siguiente:
Instale SQL Server 2019 para Linux. Puede instalar SQL Server en Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) y Ubuntu. Para más información, consulte la guía de instalación de SQL Server en Linux.
Instale la actualización acumulativa (CU) 3 o posterior para SQL Server 2019. Siga estos pasos:
Configure los repositorios para las actualizaciones acumulativas. Para más información, consulte Configuración de repositorios para instalar y actualizar SQL Server en Linux.
Actualice el paquete mssql-server a la actualización acumulativa más reciente. Para más información, consulte la sección de actualización de SQL Server en la guía de instalación de SQL Server en Linux.
Instalación de Extensiones de lenguaje
Nota:
Si instaló Machine Learning Services en SQL Server 2019, el paquete mssql-server-extensibility para las Extensiones de lenguaje ya está instalado y puede omitir este paso.
Ejecute el comando siguiente para instalar Extensiones de lenguaje de SQL Server en SUSE Linux Enterprise Server (SLES), que se usa para el entorno de ejecución personalizado de Python.
# Install as root or sudo
sudo zypper install mssql-server-extensibility
Instalación de Python 3.7 y pandas
La extensión del lenguaje Python que se usa para el entorno de ejecución de Python actualmente admite solo Python 3.7. Si quiere usar una versión distinta de Python, siga la instrucción que aparece en el repositorio de GitHub sobre Extensiones de lenguaje de Python para modificar y recompilar la extensión.
Instale Python 3.7 en el servidor.
Ejecute el comando siguiente para instalar el paquete pandas
# Install pandas to /usr/lib: sudo python3.7 -m pip install pandas -t /usr/lib/python3.7/dist-packages
Instalación personalizada de Python
Nota
Si instaló Python 3.7 en la ubicación predeterminada de /usr/lib/python3.7
, puede omitir esta sección y pasar a la sección Registro de la extensión del lenguaje.
Si compiló su propia versión de Python 3.7, use los comandos siguientes para que SQL Server sepa de su instalación personalizada.
Incorporación de una variable de entorno
Primero, edite el servicio mssql-launchpadd para agregar la variable de entorno PYTHONHOME al archivo /etc/systemd/system/mssql-launchpadd.service.d/override.conf
.
Abra el archivo con systemctl.
sudo systemctl edit mssql-launchpadd
Inserte el texto siguiente en el archivo
/etc/systemd/system/mssql-launchpadd.service.d/override.conf
que se abre. Establezca el valor de PYTHONHOME en la ruta de instalación personalizada de Python.[Service] Environment="PYTHONHOME=<path to the python3.7 lib>"
Guarde el archivo y cierre el editor.
A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0
.
Cree el archivo custom-python.conf en
/etc/ld.so.conf.d
.sudo vi /etc/ld.so.conf.d/custom-python.conf
En el archivo que se abre, agregue la ruta de acceso a libpython3.7m.so.1.0 de la instalación personalizada de Python.
<path to the python3.7 lib>
Guarde el archivo nuevo y cierre el editor.
Ejecute
ldconfig
y compruebe que se puede cargarlibpython3.7m.so.1.0
; para ello, ejecute los comandos siguientes y compruebe que se pueden encontrar todas las bibliotecas dependientes.sudo ldconfig ldd <path to the python3.7 lib>/libpython3.7m.so.1.0
Concesión de acceso a la carpeta de Python
Establezca la opción datadirectories
de la sección de extensibilidad del archivo /var/opt/mssql/mssql.conf
en la instalación personalizada de Python.
sudo /opt/mssql/bin/mssql-conf set extensibility.datadirectories <path to python3.7>
Reinicio de mssql-launchpadd
Ejecute el comando siguiente para reiniciar mssql-launchpadd.
sudo systemctl restart mssql-launchpadd
Registro de la extensión del lenguaje
Siga estos pasos para descargar y registrar la extensión del lenguaje Python, que se usa para el entorno de ejecución personalizado de Python.
Descargue el archivo python-lang-extension-linux-release.zip del repositorio de GitHub de Extensiones de lenguaje de SQL Server.
También puede usar la versión de depuración (python-lang-extension-linux-debug.zip) en un entorno de desarrollo o prueba. La versión de depuración proporciona información de registro detallada para investigar los errores y no se recomienda para los entornos de producción.
Use Azure Data Studio para conectarse a la instancia de SQL Server y ejecute el comando de T-SQL siguiente para registrar la extensión del lenguaje Python con CREAR UN LENGUAJE EXTERNO.
Modifique la ruta de acceso de esta instrucción para reflejar la ubicación del archivo ZIP descargado de la extensión del lenguaje (python-lang-extension-linux-release.zip).
CREATE EXTERNAL LANGUAGE [myPython] FROM (CONTENT = N'/path/to/python-lang-extension-linux-release.zip', FILE_NAME = 'libPythonExtension.so.1.1'); GO
Ejecute la instrucción para cada base de datos en la que quiera usar la extensión del lenguaje Python.
Nota
Python es una palabra reservada y no se puede usar como nombre de un lenguaje externo nuevo. Use otro nombre. Por ejemplo, la instrucción anterior usa myPython.
Habilitación de scripts externos
Puede ejecutar scripts externos de Python con el procedimiento almacenado sp_execute_external script.
Si quiere habilitar los scripts externos, use Azure Data Studio para ejecutar la instrucción siguiente.
sp_configure 'external scripts enabled', 1;
RECONFIGURE WITH OVERRIDE;
Comprobación de la instalación
Use el script de SQL siguiente para comprobar la instalación y la funcionalidad del entorno de ejecución personalizado de Python. En el siguiente script de ejemplo, myPython
se usa como nombre de idioma porque no se puede proporcionar el nombre de idioma predeterminado Python
para un entorno de ejecución personalizado.
EXEC sp_execute_external_script
@language =N'myPython',
@script=N'
import sys
print(sys.path)
print(sys.version)
print(sys.executable)'