5

我正在尝试通过python获取我电脑网卡的IP地址和MAC地址。我从这里得到了一些代码

我创建了一个项目“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 作为“python main.py”时,我得到了 IP 地址。

当我以“dev_appserver.py getip”运行时,服务器就设置好了。当我以 localhost:8080 浏览页面时,网页是白屏,并且在控制台出现以下错误。

从 netifaces 导入接口、ifaddresses、AF_INET

ImportError:没有名为 netifaces 的模块

我该如何解决这个问题?

4

5 回答 5

10

只需安装netifaces

pip install netifaces如果你安装了 pip,或者下载源代码,解压它运行并python setup.py install

警告:这将在您的系统上全局安装它,所以要小心,或者使用virtualenv

于 2013-10-12T09:20:31.363 回答
2

如果您使用的是ubuntu

sudo apt install python3-netifaces
于 2018-11-08T07:10:13.617 回答
1

实际上,这里的问题是使用 pip 安装时必须是 root 用户,否则将无法全局安装。因此,除非在与模块目录相同的目录或路径中,否则将无法找到该模块

所以你需要这个:

sudo pip install netifaces

或在 Windows 上使用提升的命令提示符安装!

于 2018-08-18T20:12:15.047 回答
0

看来您已经安装netifaces在本地开发环境中了。但是 Google App Engine 无法识别它。

如果您使用 运行脚本python main.py,Python 解释器将在 PYTHONPATH 中查找您的库。GAE 不遵循该规则。

要在 GAE 中安装库,通常只需将库模块目录放在应用程序路径的根目录中(而 app.yaml 是)。但出于安全原因,我认为 Google 不会允许您安装可以在其 PaaS 中获取硬件信息的库。

更新:

因为你只需要一个 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()

运行:python main.py

于 2013-10-12T09:25:44.553 回答
0

来到这里是为了同样的问题,但在我的情况下pip install会说这个要求已经得到满足。然而:

pip uninstall netifaces && pip install netifaces

解决它。

留在这里留给后人。sudo如果需要,请使用。

于 2020-03-03T20:29:40.357 回答