2013-10-12 3 views
1

Я пытаюсь получить IP-адрес и MAC-адрес сетевой карты моего компьютера с помощью python. У меня есть код от hereImportError: Нет модуля с именем netifaces

Я создаю proj «getip». создать «main.py». И я изменить код «main.py», как следовать

from netifaces import interfaces, ifaddresses, AF_INET 

def ip4_addresses(): 
    ip_list = [] 
    for interface in interfaces(): 
     for link in ifaddresses(interface)[AF_INET]: 
      ip_list.append(link['addr']) 

    return ip_list 

def main(): 
    print ip4_addresses() 


if __name__ == "__main__": 
    main() 

и создать «app.yaml»

application: getip 
version: 1 
runtime: python 
api_version: 1 

handlers: 
- url: .* 
    script: main.py 

и когда я бегу main.py на консоли, как «питона магистралью. py ", я получил IP-адреса.

и когда я запускаю как «dev_appserver.py getip», сервер настроен. Когда я просматриваю страницу как localhost: 8080, веб-страница имеет белый экран, и я получил следующую ошибку на консоли.

from netifaces import interfaces, ifaddresses, AF_INET

ImportError: No module named netifaces

Как я могу решить проблему?

+0

ли запустить ваш сервер приложений и тот же Python бинарник? Что говорит 'head dev_appserver.py'? –

+0

Похоже, вы используете Google App engine. Зачем? –

+0

@MartijnPieters, я получил эту ** голову: не могу открыть 'dev_appserver.py 'для чтения: Нет такого файла или каталога ** –

ответ

6

просто установить netifaces

pip install netifaces если вы пип установлены, или загрузить исходный код, распаковать его запустить и python setup.py install

предупреждение: это установить его глобально в системе, поэтому будьте осторожны, или использовать virtualenv

+4

больше не работает в новых pip – Shane

0

Похоже, что вы установили netifaces в свою локальную среду разработки. Но Google App Engine не распознает его.

Если вы запустите свой скрипт с помощью python main.py, интерпретатор Python будет искать ваши библиотеки в PYTHONPATH. GAE не следует этому правилу.

Чтобы установить библиотеку в GAE, вам просто нужно поместить библиотечный модуль в корневой каталог вашего приложения (например, app.yaml). Но я не думаю, что Google позволит вам установить библиотеки, которые могут получить информацию об оборудовании в своем PaaS по соображениям безопасности.

Обновления:

Becaue вам просто нужен веб-сервер для вывода результата, я рекомендую вам выбрать простой, хорошо документированный, микро веб-фреймворк Python, как Flask или bottle.

Установка: pip install Flask или easy_install Flask

код:

from flask import Flask 
from netifaces import interfaces, ifaddresses, AF_INET 
app = Flask(__name__) 

def ip4_addresses(): 
    ip_list = [] 
    for interface in interfaces(): 
     for link in ifaddresses(interface)[AF_INET]: 
      ip_list.append(link['addr']) 

    return ip_list 

@app.route("/") 
def main(): 
    return str(ip4_addresses()) 

if __name__ == "__main__": 
    app.run() 

Run: питон main.py

+0

ваш ответ почти правильный. На самом деле, я хочу создать приложение для win и Linux. Но я новичок в Python. Я прихожу из веб-среды (LAMP). Поэтому я не знаю, как создать приложение с помощью python. Если вы можете, поделиться знаниями с PLS. –

+0

Если вы хотите изучить/создать веб-приложение python, я предлагаю вам выбрать некоторые веб-фреймворки, такие как Flask (или бутылка, Django), а не механизм Google App. –

+0

Спасибо @glasslion, я попробую один из них, возможно, Django. Но я хочу создать приложение, а не веб-приложение. –

Смежные вопросы