FYI Я могу проверить, что метод:
import socket
addr = socket.gethostbyname(socket.gethostname())
Работает в OS X (10.6, 10.5), Windows XP и на хорошо управляемом сервере отдела RHEL. Он не работал на очень минимальной виртуальной виртуальной машине CentOS, и я просто делаю взлом ядра. Поэтому для этого экземпляра вы можете просто проверить адрес 127.0.0.1 и в этом случае сделать следующее:
if addr == "127.0.0.1":
import commands
output = commands.getoutput("/sbin/ifconfig")
addr = parseaddress(output)
И затем проанализировать ip-адрес с выхода. Следует отметить, что ifconfig по умолчанию не входит в обычный PATH пользователя, поэтому я даю полный путь в команде. Надеюсь, это поможет.