python gitpython

Python os.getlogin problema



install git python windows 10 (2)

Si creo un archivo como:

import os print os.getlogin()

Y ejecutarlo con cron, obtengo una excepción.

print os.getlogin() OSError: [Errno 22] Invalid argument

Si lo ejecuto manualmente en shell - funciona.

El problema es que GitPython 0.3.1 en commit () usa esta función, y necesito usarla.

¿Hay algún trabajo alrededor?

Lo he probado en Ubuntu10.10 / python2.6.6 y Debian5.0.6 / python2.5.2.


Aquí hay una conjetura no probada sobre una os.getlogin() que podría funcionar: os.getlogin() llama a getlogin() en la biblioteca de C, que a su vez busca el nombre de inicio de sesión en el registro utmp correspondiente al proceso actual. Como no hay un registro utmp para cron, puede intentar crear uno usando

sessreg -a <logname> ; do_stuff ; sessreg -d <logname>

en tu crontab. Tal vez tengas que jugar con las opciones sessreg . Y hazme saber si esto realmente funcionó si lo probaste :)


De los docs os.getlogin() : "Devuelve el usuario que os.getlogin() sesión al terminal de control del proceso". Su script no tiene un terminal de control cuando se ejecuta desde cron . Los documentos continúan sugiriendo: "Para la mayoría de los propósitos, es más útil usar la variable de entorno LOGNAME para averiguar quién es el usuario, o pwd.getpwuid(os.getuid())[0] para obtener el nombre de inicio de sesión de El ID de usuario actualmente efectivo ".

Como no desea modificar GitPython, puede escribir un script que haga esto:

import os, pwd os.getlogin = lambda: pwd.getpwuid(os.getuid())[0] import git # do whatever you need to do with GitPython here

Sin embargo, sugeriría presentar un error (o mejor aún, enviar un parche) con GitPython.