2013-10-12 11 views
1

我試圖通過python獲取我的電腦網卡的IP地址和MAC地址。我得到了一些代碼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引擎。爲什麼? –

+0

@MartijnPieters,我得到了這個**頭:無法打開'dev_appserver.py'閱讀:沒有這樣的文件或目錄** –

回答

6

只需安裝netifaces

pip install netifaces如果你有點子安裝或下載源代碼,解壓運行,python setup.py install

警告:這將您的系統在全球安裝了,所以謹慎使用,或使用virtualenv

+4

不再適用於較新版本點子 – Shane

0

看來你已經在你的本地開發環境中安裝了netifaces。但Google App Engine無法識別它。

如果您使用python main.py運行腳本,Python解釋器將在PYTHONPATH中查找您的庫。 GAE不遵循該規則。

要在GAE中安裝庫,通常只需將庫模塊目錄放在應用程序路徑的根目錄中(即app.yaml)。但我不認爲Google會允許您出於安全原因安裝可以在其PaaS中獲取硬件信息的庫。

更新:

Becaue你只需要一個Web服務器的輸出結果,我建議你選擇一個簡單的,有據可查的,微Python的Web框架,像Flaskbottle

安裝: pip install Flaskeasy_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() 

運行:蟒蛇main.py

+0

你的答案几乎是正確的。實際上,我想爲win和Linux創建一個應用程序。但我是Python的新手。我來自網絡(LAMP)環境。那爲什麼,我不知道如何通過python創建應用程序。如果可以的話,請向我分享知識。 –

+0

如果你想學習/創建一個python web應用程序,我建議你選擇一些web框架,比如Flask(或瓶子,Django),而不是Google App引擎。 –

+0

感謝@glasslion,我會嘗試其中的一個,可能是Django。但我想創建一個軟件應用程序而不是Web應用程序。 –

相關問題