我正在尝试通过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的模块
我该如何解决这个问题?
答案 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框架,如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()
运行: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
。