2012-05-20 13 views
8

Cuando ejecuto un script en Python, este problema se produce:pitón sitio de importación no

'import site' failed; use -v for traceback 

así que trataron de nuevo con la opción -v, y que puedo conseguir estos mensajes:

'import site' failed; traceback: 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/site.py", line 513, in <module> 
    main() 
    File "/usr/lib/python2.6/site.py", line 495, in main 
    known_paths = addusersitepackages(known_paths) 
    File "/usr/lib/python2.6/site.py", line 238, in addusersitepackages 
    USER_BASE = env_base if env_base else joinuser("~", ".local") 
    File "/usr/lib/python2.6/site.py", line 225, in joinuser 
    return os.path.expanduser(os.path.join(*args)) 
    File "/usr/lib/python2.6/posixpath.py", line 256, in expanduser 
    userhome = pwd.getpwuid(os.getuid()).pw_dir 
KeyError: 'getpwuid(): uid not found: 65530' 

¿Cómo puedo lidiar con esta situación?

+0

Tengo este error al ejecutar una secuencia de comandos de Python como un servicio systemd con DynamicUser = yes – aberaud

Respuesta

7

Parece que espera que un usuario con id 65530 exista en su sistema, pero no es así. Y obtiene esa identificación llamando al os.getuid(), que devuelve la identificación de usuario actual.

¿Tal vez el usuario está ejecutando esto como se ha eliminado o deshabilitado mientras tanto? Consulte /etc/passwd para obtener pistas.


actualización a la luz de su comentario: al parecer /etc/passwd no existe dentro de su jaula chroot. O se puede intentar mapear en, o puede establecer la variable de entorno para HOME algo sensato, ya que el código para expanduser dice:

if 'HOME' not in os.environ: 
     import pwd 
     userhome = pwd.getpwuid(os.getuid()).pw_dir 
    else: 
     userhome = os.environ['HOME'] 
+0

ejecuto este script en Python con chrooted. – user1035957

+0

Comenté este bloque, y simplemente configuré el 'userhome = '/'' y este error desapareció, muchas gracias :) – user1035957

+0

¡Has cortado la biblioteca estándar de tu instalación de Python en todo el sistema, y ​​de una manera tan horrible! Aconsejo revertir eso inmediatamente antes de que su sistema sea inutilizable. Mi respuesta contiene dos mejores alternativas. – Thomas

0

Si obtiene este error de mod_wsgi en Apache (en ti registro de errores de aplicación), la solución es añadir "casa =/ruta/a/app" para su directiva WSGIDaemonProcess en tu wsgi.conf (no importa tanto donde establezcas el camino). Por ejemplo-

WSGIDaemonProcess ckan_default display-name=ckan_default processes=2 threads=15 home=/usr/lib/ckan/default 
+0

El caso de mod_wsgi es diferente y no es el mismo problema subyacente. ¿Qué versión de mod_wsgi estás usando? Ese puede haber sido el caso para versiones antiguas de mod_wsgi, pero no estoy seguro de que sea cierto (no recuerdo) de las últimas versiones. –