우분투와 함께 제공되는 주식 Python 2.6.5를 실행하는 우분투 10.04를 실행하는 노트북과 데스크탑이 있습니다. 노트북에 socket.getaddrinfo가 한 시스템에서 실패합니다. 분명히 다른 동일한 작품에서 작동합니다. 왜?
다음 프로그램#!/usr/bin/env python
import socket
print(socket.getaddrinfo("localhost", 8025, 0, socket.SOCK_STREAM))
작품 - 즉, 그것은 오류가 발생하지 않고 몇 가지 물건을 출력합니다.
물건은 사실이다
는그러나
[(10, 1, 6, '', ('::1', 8025, 0, 0)), (2, 1, 6, '', ('127.0.0.1', 8025))]
(. 즉, IPv6의 데이터를 하나 개의 무리와의 IPv4 데이터의 한 무리의), 다른 상자에 동일한 프로그램을 수행합니다 이 :
Traceback (most recent call last):
File "socktest.py", line 5, in <module>
print(socket.getaddrinfo("localhost", 8025, 0, socket.SOCK_STREAM))
socket.gaierror: [Errno -2] Name or service not known
왜?
노트북은 x86 (즉, 32 비트)이지만 데스크톱은 x86_64이지만, 중요한 점은 놀랄 것입니다. 노트북에는 두 가지 네트워크 인터페이스 (무선 및 유선)가 있지만 데스크톱은 유선 인터페이스 만 있습니다. 다시 그게 관련이 있는지 의심 스럽네. "ifconfig"에 따르면 세 개의 인터페이스 모두 IPv6 주소에 바인딩되었습니다. 나는 노트북, 다시 나에게로 관련이없는 파업이 절
# The primary network interface
auto eth0
iface eth0 inet dhcp
를 ...이 점을 제외하고,을/etc/두 개의 상자에 네트워크를 diffed하고, 차이를 보지 못했다.
:: 당신이 어떤 맥락을 원하는 경우에
: 내 파이썬 프로그램이 이메일을 보내려고하고, 궁극적으로한다 getaddrinfo를 호출하는 이메일 소프트웨어입니다.
"ping localhost"가 둘 모두에서 제대로 작동합니까? – bstpierre
확인할 다른 파일 :'/ etc/services'와'/ etc/resolv.conf'. –
나는 똑같은 문제가있다 : http://stackoverflow.com/q/32008965/936293. 문제가있는 컴퓨터의 /etc/resolv.conf는 192.168.80.254 (홈 라우터)가 첫 번째 줄에 있고 ISP의 DNS 서버가 두 번째 줄에 있습니다. 'dig'는 192.168.80.254에 대한 요청이 잘 돌아가지만'getaddrinfo'는 잘되지 않는다는 것을 보여줍니다. /etc/resolv.conf에서 두 줄을 바꾸면 작동하지만 각 DHCP 새로 고침시 재설정됩니다. 실망. 어떤 팁? –