Running script.exe da PermissionError: [Errno 13] , pero ejecuta el mismo código en script. Py no

Tengo un script Python que modifica un archivo Excel. Funciona bien.

Cuando convierto ese mismo script en un ejecutable, e intento ejecutarlo, me da un error diciendo que no puede modificar el archivo Excel.

enter image description here

No entiendo por qué. Dirijo el .exe como administrador. El archivo Excel no es solo leído y puede ser modificado por los administradores. Cualquier ayuda sería apreciada.

La línea que da el error es wb.save('mybots.xlsx')

def myClick():

    wb = openpyxl.load_workbook(r"mybots.xlsx")
    sheet = wb["Sheet1"]

    # loop through the list of checkboxes and write their value to excel
    idx = 0
    while idx < list_length:
        cb = list_checkboxes[idx]
        varname = cb.cget("variable")
        cbValue = root.getvar(varname)
        sheet.cell(row=idx+2, column=2).value = str(cbValue)
        idx += 1
        wb.save('mybots.xlsx')

Pregunta hecha hace 3 años, 4 meses, 28 días - Por compilercaptain


2 Respuestas:

  • El error que estás experimentando con el archivo Excel al ejecutar el script convertido en ejecutable puede estar relacionado con los permisos de escritura en el directorio donde se encuentra el archivo Excel. A veces, al ejecutar un archivo .exe como administrador, las rutas de acceso a los archivos pueden cambiar y causar conflictos con la ubicación del archivo Excel.

    Una solución que puedes probar es especificar la ruta absoluta completa del archivo Excel en lugar de simplemente el nombre del archivo. Por ejemplo, si el archivo Excel se encuentra en la misma carpeta que el script, puedes usar algo como esto:

    python
    wb.save(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'mybots.xlsx'))
    

    También es recomendable comprobar que el archivo Excel no esté siendo utilizado por otro programa al mismo tiempo que intentas guardarlo desde el script convertido en ejecutable.

    Además, asegúrate de que el ejecutable esté teniendo los mismos permisos de administrador que el interprete Python .py ejecutado con permisos elevados.

    Intenta realizar estos ajustes y verifica si el problema persiste. Si necesitas más ayuda, ¡no dudes en preguntar!

    Respondida el Dec 18, 2020 a las 16:54 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El error PermissionError: [Errno 13] indica que el ejecutable no tiene permiso para escribir en el archivo mybots.xlsx. Esto puede deberse a varias razones:

    • Permisos de archivo: Asegúrate de que el ejecutable tenga permisos de escritura sobre el archivo `mybots.xlsx`. Puedes comprobarlo haciendo clic con el botón derecho en el archivo y seleccionando "Propiedades" > "Seguridad".
    • Protección antivirus: Algunos programas antivirus pueden bloquear el acceso a archivos, incluso si el ejecutable tiene permisos. Intenta desactivar temporalmente el antivirus y ejecutar el ejecutable.
    • Ubicación del archivo: Asegúrate de que el ejecutable y el archivo `mybots.xlsx` estén en la misma ubicación o en una ubicación donde el ejecutable tenga permisos de escritura.
    • Ejecución como administrador: Incluso si ejecutas el ejecutable como administrador, puede que no tenga permisos suficientes para escribir en ubicaciones protegidas del sistema. Intenta ejecutar el ejecutable desde una ubicación diferente, como el escritorio.
    • Código del script: Revisa detenidamente el código del script para asegurarte de que no hay ningún otro problema que pueda causar el error de permisos.

    Si nada de lo anterior funciona, intenta lo siguiente:

    Ejecutable de 64 bits: Si estás utilizando un sistema operativo de 64 bits, intenta crear un ejecutable de 64 bits con PyInstaller. Puente de archivos: Utiliza un puente de archivos para redirigir el acceso al archivo mybots.xlsx a una ubicación donde el ejecutable tenga permisos de escritura. API de Windows:* Utiliza la API de Windows para obtener acceso directo al archivo mybots.xlsx y evitar los problemas de permisos.

    Espero que esto ayude. Déjame saber si tienes más preguntas.

    Respondida el Dec 18, 2020 a las 16:55 - por Gemini

    Votos positivos: 0 | Votos negativos: 0