重要错误:没有名为netipaces的模块

2024-05-16 00:13:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图通过python获取我电脑网卡的IP地址和MAC地址。我从here那里得到一些代码

我创建了一个项目“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浏览网页时,网页是白色屏幕,在控制台上出现以下错误。

from netifaces import interfaces, ifaddresses, AF_INET

ImportError: No module named netifaces

我怎样才能解决这个问题?


Tags: 代码frompyimportipmain地址def
3条回答

只需安装netifaces

pip install netifaces如果安装了pip,或者下载了源代码,请将其解包运行并python setup.py install

警告:这将在您的系统上全局安装它,因此请小心,或使用virtualenv

似乎您已经在本地开发环境中安装了netifaces。但谷歌应用引擎并不承认这一点。

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

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

更新:

因为您只需要一个web服务器来输出结果,所以我建议您选择一个简单的、文档丰富的micro-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

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

所以你需要这个:

sudo pip install netifaces

或者在windows安装时使用提升的命令提示符!

相关问题 更多 >