Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python ローカルIPアドレスを取得する

Pythonを使用してローカルIPアドレスを取得してみます。
標準のsocketモジュールを使用します。

import socket

ip = socket.gethostbyname(socket.gethostname())
print(ip)

Windowsではこれを実行するとIPアドレスが取得できますが、Ubuntuでは'127.0.1.1'が返されてしまいます。
そこで、netifacesモジュールを使用してみます。
pypi.org
インストールはいつも通り、pipコマンドを使用します。

pip install netifaces

import netifaces

ipifs= netifaces.interfaces()
print(ipifs)

これを実行するとインターフェイスのリストが表示されます。

['lo0', 'en0', 'en1']

詳細を取得したいインターフェイスを指定することも可能。importは省略。

ipif= netifaces.ifaddresses('en0')
print(ipif)

当該インターフェイスIPアドレスだけがほしければ、

ip = netifaces.ifaddresses('en0')[netifaces.AF_INET][0]['addr']
print(ip)

'192.168.xx.xx'
socketモジュールを使用した時と同じ形式で取得できます。
今日はここまで。