2016-10-11 4 views
9

socket.gethostbyname (socket.gethostname()) ओएस एक्स एल कैपिटन पर अच्छा काम करता है। हालांकि, यह मैकोज सिएरा को अद्यतन मैक के बाद अब काम नहीं कर रहा है।gaierror: [Errno 8] nodename और न ही सर्वोनाम प्रदान किया गया है, या ज्ञात नहीं है (मैकोज सिएरा के साथ)

धन्यवाद!

import socket 
socket.gethostbyname(socket.gethostname()) 

Traceback (most recent call last): 
    File "<pyshell#26>", line 1, in <module> 
    socket.gethostbyname(socket.gethostname()) 
gaierror: [Errno 8] nodename nor servname provided, or not known 
+4

सुनिश्चित करें कि फ़ाइल '/ etc/hosts' में '127.0.0.1 लोकलहोस्ट' है। –

+3

धन्यवाद! मैंने $ sudo nano/etc/hosts की जांच की है और 127.0.0.1 स्थानीयहोस्ट पहले से ही पाया है। अभी भी काम नहीं कर रहा है। – FBL

+0

स्टैक ओवरफ़्लो में आपका स्वागत है! कृपया एक अच्छा प्रश्न पूछने में आपकी सहायता के लिए हमारी [SO प्रश्न चेकलिस्ट] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist) की समीक्षा करें, और इस प्रकार एक अच्छा जवाब प्राप्त करें। –

उत्तर

3

वही समस्या टोम। मैं करने के लिए कोड बदलने के लिए:

import socket 
socket.gethostbyname("") 

और यह अब काम करता है।

+0

मुझे नहीं लगता कि यह काम करेगा, मुझे इसके पीछे तकनीकी कारण नहीं पता है, लेकिन जब मैं इसे कोशिश करता हूं तो मुझे मैकोज़ पर '0.0.0.0' मिलता है 10.12.2। मुझे लगता है कि यह होस्टनाम नहीं देख रहा है और केवल एक डिफ़ॉल्ट मान देता है। – Compunutter

+0

यदि आप एक टीसीपी/http सर्वर के लिए आईपी और पोर्ट को बांधना चाहते हैं, तो इसके लिए '0.0.0.0' ठीक है। लेकिन अगर आप आईपी टेक्स्ट प्राप्त करना चाहते हैं, तो gethostbyname एक अच्छा विकल्प नहीं है। – jxc

9

another question, के आधार पर ओ पी की टिप्पणियों में एक जवाब जो /etc/hosts संपादित करने के लिए की आवश्यकता है, यानी echo 127.0.0.1 $HOSTNAME >> /etc/hosts नहीं है।

वैकल्पिक रूप से, आप socket.gethostbyname('localhost') का उपयोग कर सकते हैं, यह मानते हुए कि localhost वह है जो आपको चाहिए और इसे आपके /etc/hosts में परिभाषित किया गया है।

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