es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Instalación e importación de paquetes de Python en el Runbook de Automatización de Azure.

Instalo paquetes python en Azure Automantion Runbook. Y después de la instalación, tengo un problema con la importación desde el paquete azure.keyvault.
Aquí está mi código:

import subprocess
import sys

output = subprocess.run([“python”, “-m”, “pip”, “install”, “azure-identity”], capture_output=True)
print(output)
print(‘key vault setup’)
output = subprocess.run([“python”, “-m”, “pip”, “install”, “azure-keyvault”], capture_output=True)
print(output)
import site
from importlib import (reload, invalidate_caches)
reload(site)
invalidate_caches()
import azure.identity
import azure.keyvault
from azure.identity import DefaultAzureCredential
from azure.keyvault import secrets

Aquí está el error:

Failed
Traceback (most recent call last): File “C:\Temp\oowpjjfq.qph\72071fbe-ccd8-4487-a45f-46c6e9ed9583”, línea 27, en from azure.keyvault import secrets ImportError: no se puede importar el nombre ‘secrets’ desde ‘azure.keyvault’ (C:\WPy64-3800\python-3.8.0.amd64\lib\site-packages\azure\keyvault__init__.py)

No tengo problema con la importación de azure.keyvault localmente. Por favor, también preste atención de que no hay problema con la importación de azure.keyvault. Por eso creo que este problema está relacionado con Runbook.
¿Cómo puedo resolverlo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que hay un problema al importar el módulo “secrets” del paquete “azure.keyvault” en el Runbook de Azure Automation después de instalar el paquete usando pip. Para solucionar este problema, puedes intentar los siguientes pasos:

    1. Comprueba si el módulo “secrets” está presente en el paquete “azure.keyvault” instalado. Puedes hacer esto ejecutando el siguiente comando en el Runbook:
      import azure.keyvault
      dir(azure.keyvault)
      

      Esto listará todos los módulos y funciones disponibles en el paquete “azure.keyvault”. Comprueba si se encuentra “secrets”.

    2. Si “secrets” no está en la lista, intenta desinstalar y reinstalar el paquete “azure-keyvault” usando pip. Puedes hacer esto modificando el código existente de la siguiente manera:

      import subprocess
      import sys
      
      
      output = subprocess.run(["python", "-m", "pip", "uninstall", "azure-keyvault"], capture_output=True)
      print(output)
      output = subprocess.run(["python", "-m", "pip", "install", "azure-identity"], capture_output=True)
      print(output)
      output = subprocess.run(["python", "-m", "pip", "install", "azure-keyvault"], capture_output=True)
      print(output)
      
      import azure.identity
      import azure.keyvault
      from azure.identity import DefaultAzureCredential
      from azure.keyvault import secrets
      

      Esto desinstalará primero el paquete “azure-keyvault” existente y luego lo reinstalará. Asegúrate de ejecutar este código con privilegios de administrador.

    3. Si los pasos anteriores no funcionan, intenta actualizar el paquete “azure-identity” a la última versión antes de instalar “azure-keyvault”. Puedes hacer esto modificando el código de la siguiente manera:

      import subprocess
      import sys
      
      
      output = subprocess.run(["python", "-m", "pip", "install", "--upgrade", "azure-identity"], capture_output=True)
      print(output)
      output = subprocess.run(["python", "-m", "pip", "install", "azure-keyvault"], capture_output=True)
      print(output)
      
      import azure.identity
      import azure.keyvault
      from azure.identity import DefaultAzureCredential
      from azure.keyvault import secrets
      

      Esto actualizará el paquete “azure-identity” a la última versión y luego instalará “azure-keyvault”.

    4. Finalmente, si ninguno de los pasos anteriores funciona, intenta usar el directorio “site-packages” en el Runbook para instalar e importar los paquetes. Para hacer esto, modifica el código de la siguiente manera:

      import subprocess
      import sys
      
      
      output = subprocess.run(["python", "-m", "pip", "install", "--target=/path/to/site-packages", "azure-identity"], capture_output=True)
      print(output)
      output = subprocess.run(["python", "-m", "pip", "install", "--target=/path/to/site-packages", "azure-keyvault"], capture_output=True)
      print(output)
      
      import site
      from importlib import (reload, invalidate_caches)
      reload(site)
      invalidate_caches()
      
      import azure.identity
      import azure.keyvault
      from azure.identity import DefaultAzureCredential
      from azure.keyvault import secrets
      

      Reemplaza “/path/to/site-packages” con la ruta al directorio “site-packages” en el Runbook. Puedes encontrar la ruta ejecutando el siguiente comando en el Runbook:

      import site
      site.getsitepackages()
      

      Esto mostrará una lista de todos los directorios donde se pueden instalar paquetes en el Runbook. Utiliza la ruta del directorio que tenga “site-packages” en su nombre.

      Ten en cuenta que este método instalará los paquetes en un directorio diferente al directorio de instalación predeterminado de pip y puede causar problemas si otros paquetes dependen de estos paquetes.

Comments are closed.