Compartir a través de


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:

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.

  1. Inicie el asistente para la instalación de SQL Server 2019.

  2. En la pestaña Instalación, seleccione Nueva instalación independiente de SQL Server o agregar características a una instalación existente.

  3. 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.

      Instalación de Extensiones de lenguaje de SQL Server 2019.

  4. 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
  5. 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.

  1. Descargue Python 3.7 para Windows y ejecute el programa de instalación en el servidor.

  2. Seleccione Agregar Python 3.7 a la ruta de acceso y, después, Personalizar instalación.

    Instalación de Python 3.7: adición de Python 3.7 a la ruta de acceso

  3. En Características opcionales, deje los valores predeterminados y seleccione Siguiente.

  4. Seleccione Instalar para todos los usuarios y anote la ubicación de instalación.

    Instalación de Python 3.7: instalación para todos los usuarios

  5. 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.

  1. 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.

  2. 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.

  1. Abra el Administrador de configuración de SQL Server.

  2. 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.

  1. 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.

  2. 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:

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.

  1. 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
    
  2. 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
    
  3. 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.

  1. 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
    
  2. 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.

  1. Abra el archivo con systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. 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>"
    
  3. Guarde el archivo y cierre el editor.

A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0.

  1. Cree el archivo custom-python.conf en /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. 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>
    
  3. Guarde el archivo nuevo y cierre el editor.

  4. Ejecute ldconfig y compruebe que se puede cargar libpython3.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.

  1. 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.

  2. 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:

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.

  1. 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
    
  2. 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.

  1. Abra el archivo con systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. 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>"
    
  3. Guarde el archivo y cierre el editor.

A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0.

  1. Cree el archivo custom-python.conf en /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. 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>
    
  3. Guarde el archivo nuevo y cierre el editor.

  4. Ejecute ldconfig y compruebe que se puede cargar libpython3.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.

  1. 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.

  2. 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:

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.

  1. Instale Python 3.7 en el servidor.

  2. 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.

  1. Abra el archivo con systemctl.

    sudo systemctl edit mssql-launchpadd
    
  2. 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>"
    
  3. Guarde el archivo y cierre el editor.

A continuación, asegúrese de que se puede cargar libpython3.7m.so.1.0.

  1. Cree el archivo custom-python.conf en /etc/ld.so.conf.d.

    sudo vi /etc/ld.so.conf.d/custom-python.conf
    
  2. 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>
    
  3. Guarde el archivo nuevo y cierre el editor.

  4. Ejecute ldconfig y compruebe que se puede cargar libpython3.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.

  1. 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.

  2. 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)'

Pasos siguientes