2012-05-20 83 views
8

當我執行python腳本,就會出現此問題:蟒蛇導入站點失敗

'import site' failed; use -v for traceback 

所以我-v選項又試了一次,而且我可以得到這些信息:

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

我怎樣才能處理這種情況?

+0

我運行一個Python腳本作爲一個systemd服務時DynamicUser得到這個錯誤= YES – aberaud

回答

7

看起來像是希望系統中存在具有ID 65530的用戶,但它不會。它通過調用os.getuid()來獲得該ID,它返回當前用戶ID。

也許您正在運行此用戶的用戶在此期間已被刪除或禁用?檢查/etc/passwd的線索。


更新您的評論來看:顯然/etc/passwd沒有你的chroot監牢中存在。或者你可以嘗試繪製它,或者你可以在HOME環境變量設置爲某事明理,爲expanduser代碼說:

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

我執行與chroot的這個python腳本。 – user1035957

+0

我評論了這個模塊,並設置了'userhome ='/'',這個錯誤消失了,非常感謝:) – user1035957

+0

您破解了您的系統級Python安裝的標準庫,並且以這樣一種可怕的方式?我建議您在使系統無法使用之前馬上恢復。我的答案包含兩個更好的選擇。 – Thomas

0

如果你從阿帕奇mod_wsgi的這個錯誤(在你的應用程序錯誤日誌),解決方法是增加「家庭= /路徑/要/應用」你WSGIDaemonProcess指令中你的wsgi.conf(在你設置路徑的地方並不重要)。對於example--

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

mod_wsgi情況是不同的,而不是相同的底層問題。你使用的是什麼mod_wsgi版本?對於很老的mod_wsgi版本,情況可能已經如此,但我不確定最新版本是否屬實(不記得)。 –