2012-05-20 15 views
8

Quando eseguo script python, questo problema si verifica:pitone sito di importazione non è riuscita

'import site' failed; use -v for traceback 

così ho provato di nuovo con l'opzione -v, e posso ottenere questi messaggi:

'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' 

Come posso affrontare questa situazione?

+0

ho ottenuto questo errore durante l'esecuzione di uno script Python come un servizio di systemd con DynamicUser = yes – aberaud

risposta

7

Sembra che si supponga che un utente con ID 65530 esista sul sistema, ma non lo fa. E ottiene quell'id chiamando os.getuid() che restituisce l'id utente corrente.

Forse l'utente che stai eseguendo come è stato cancellato o disabilitato nel frattempo? Controlla /etc/passwd per gli indizi.


aggiornamento alla luce del tuo commento: a quanto pare /etc/passwd non esiste all'interno del vostro chroot jail. O si può provare a mappare in, oppure è possibile impostare la variabile di ambiente HOME a qualcosa di sensato, come il codice per expanduser dice:

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

eseguo questo script python con chroot. – user1035957

+0

Ho commentato questo blocco e ho appena impostato 'userhome = '/'' e questo errore scompare, molte grazie :) – user1035957

+0

Hai hackerato la libreria standard della tua installazione Python a livello di sistema, e in un modo così orribile ?! Ti consiglio di ripristinarlo subito prima di rendere inutilizzabile il tuo sistema. La mia risposta contiene due alternative migliori. – Thomas

0

Se si ottiene questo errore da mod_wsgi su Apache (in te log degli errori app), la correzione è di aggiungere "casa =/path/to/app" al tuo direttiva WSGIDaemonProcess in il tuo wsgi.conf (non importa tanto dove si imposta il percorso). Per example--

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

Il caso mod_wsgi è diverso e non lo stesso problema di base. Che versione di mod_wsgi stai usando? Potrebbe essere stato il caso di versioni mod_wsgi molto vecchie, ma non sono sicuro che sia vero (non ricordo) delle ultime versioni. –

Problemi correlati