2012-05-20 28 views
8

जब मैं अजगर स्क्रिप्ट को निष्पादित, यह समस्या होती है:अजगर आयात साइट में विफल रहा है

'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

के लिए मैं जब एक systemd सेवा के रूप में एक अजगर स्क्रिप्ट DynamicUser के साथ चल रहा यह त्रुटि आई = हाँ – aberaud

उत्तर

7

ऐसा लगता है कि यह आपके सिस्टम पर आईडी 65530 के साथ मौजूद उपयोगकर्ता की अपेक्षा करता है, लेकिन ऐसा नहीं है। और यह उस आईडी को os.getuid() पर कॉल करके प्राप्त करता है जो वर्तमान उपयोगकर्ता आईडी देता है।

शायद उपयोगकर्ता जिस दौरान आप इसे चला रहे हैं उसे हटा दिया गया है या अक्षम किया गया है? सुराग के लिए /etc/passwd देखें।

अपनी टिप्पणी के आलोक में

अद्यतन: जाहिरा तौर पर /etc/passwd अपने क्रूट जेल के अंदर मौजूद नहीं है। या तो आप उस में मानचित्रण की कोशिश कर सकते हैं, या आप कुछ समझदार को HOME वातावरण चर सेट कर सकते हैं, के रूप में expanduser के लिए कोड का कहना है:

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

मैं chrooted के साथ इस अजगर स्क्रिप्ट को निष्पादित। – user1035957

+0

मैंने इस ब्लॉक पर टिप्पणी की, और बस 'userhome ='/''सेट करें और यह त्रुटि गायब हो जाती है, बहुत धन्यवाद :) – user1035957

+0

आपने अपने सिस्टम-व्यापी पायथन इंस्टॉलेशन की मानक लाइब्रेरी को हैक किया है, और इस तरह के एक भयानक तरीके से ?! मैं आपके सिस्टम को अनुपयोगी बनाने से पहले इसे तुरंत वापस करने की सलाह देता हूं। मेरे जवाब में दो बेहतर विकल्प हैं। – Thomas

1

मैं भी इस मुद्दे का सामना करना पड़ा। नेट पर थोड़ा सा खोज, मुझे ठीक हो गया। अपने पर्यावरण परिवर्तक PYTHONHOME की जांच करें।

पायथनहोम को अनसेट करने का प्रयास करें और प्रयास करें। यह मेरे लिए काम किया।

(संदर्भ: https://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/532383)

0

आप (आप में एप्लिकेशन त्रुटि लॉग) अपाचे पर mod_wsgi से इस त्रुटि मिलती है, ठीक जोड़ने के लिए है "घर =/path// एप्लिकेशन के पास" में अपने 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 संस्करणों का मामला हो, लेकिन मुझे यकीन नहीं है कि नवीनतम संस्करणों के सत्य (याद नहीं) हैं। –

संबंधित मुद्दे