ImportError:没有名为netifaces的模块

时间:2013-10-12 09:14:29

标签: python python-2.7

我正在尝试通过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时,该网页为白色屏幕,我在控制台收到以下错误。

  

来自netifaces导入接口,ifaddresses,AF_INET

     

ImportError:没有名为netifaces的模块

我该如何解决这个问题?

5 个答案:

答案 0 :(得分:8)

只需安装netifaces

即可

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

警告:这会在您的系统上全局安装,因此请谨慎使用,或使用virtualenv

答案 1 :(得分: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

答案 2 :(得分:0)

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

所以您需要这个:

protected  void transferToS3(String s3BucketName, String folderPath,String 
s3FolderName) {
    AWSCredentials credentials = new BasicAWSCredentials("aceessKey", 
    "secretkey");
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTP);

        AmazonS3 s3Client = new AmazonS3Client(credentials);
        TransferManager xfer_mgr = new TransferManager(s3Client);
        AmazonS3Client ac;
            try {
                MultipleFileUpload xfer = xfer_mgr.uploadDirectory(s3BucketName,
                        s3FolderName, new File(folderPath), true);
                xfer.waitForCompletion();
            } catch (AmazonServiceException e) {
                e.printStackTrace();
            } catch (AmazonClientException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

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

答案 3 :(得分:0)

如果您使用的是 ubuntu

sudo apt install python3-netifaces

答案 4 :(得分:0)

在这里问同样的问题,但在我的情况下,pip install表示已经满足要求。但是:

pip uninstall netifaces && pip install netifaces

修复了该问题。

为了后代而留在这里。如果需要,请使用sudo