如何在 python 中导入 Azure BlobService?

Posted

技术标签:

【中文标题】如何在 python 中导入 Azure BlobService?【英文标题】:How to import Azure BlobService in python? 【发布时间】:2016-06-04 03:56:09 【问题描述】:

我们可以导入 azure.storage,但不能访问 BlobService 属性

文档说要使用以下导入语句:

from azure.storage import BlobService

但是得到以下错误:

ImportError: cannot import name BlobService

我们尝试了以下方法:

import azure.storage
...
foo = azure.storage.BlobService(...)

但是收到以下错误:

AttributeError: ‘module’ object has no attribute ‘BlobService’

我们还使用“azure.storage.blob”而不是“azure.storage”尝试了上述所有方法

我们尝试更新 azure-storage 包,但它是最新的(版本 0.30.0)

我们还尝试卸载 azure-storage 并安装整个 azure 包,但得到了相同的结果。我们尝试使用 pip 和 conda 安装它们,但两次结果相同。

我知道输出表明此版本的 azure.storage 没有 BlobService 属性,但文档明确说明要从那里导入。

https://azure.microsoft.com/en-us/documentation/articles/machine-learning-data-science-create-features-blob/

【问题讨论】:

您在 Windows 或 Linux 上测试您的代码?你有没有尝试使用虚拟环境azure.microsoft.com/en-us/documentation/articles/…? 我正在使用 Parallels Desktop 在 15 英寸 Macbook Pro 上运行 Windows 10 VM。我正在使用 Anaconda 虚拟环境,它在 documentation 中被列为可接受的 Python 发行版之一。我会尝试不同的发行版,看看是否有任何变化 新的 Azure 存储文档可在此处获得:media.readthedocs.org/pdf/azure-storage/latest/… 【参考方案1】:

如果你想使用BlobService,你可以安装包azure.storage 0.20.0,那个版本有BlobService。在最新的 azure.storage 0.30.0 中,BlobSrvice 被拆分为 BlockBlobService, AppendBlobService, PageBlobService 对象,您可以使用 BlockBlobService 替换 BlobService

【讨论】:

pip install azure-storage==0.20.0【参考方案2】:

自该教程发布后库可能已更改,但是...

我刚才试了一下,成功了:

from azure.storage.blob import BlockBlobService

blob_service = BlockBlobService(account_name="...",account_key="...")

我通过以下方式在本地安装了 Azure 存储:

pip install azure-storage

我可以通过从存储中下载一个对象来测试这一点:

blob_service.get_blob_to_path("containername","blobname","localfilename")

注意:您可以以类似的方式导入 PageBlobService,但您可能不会觉得这太有价值,因为页面 blob 主要用于 vhd。

【讨论】:

这是正确的。 0.30.0 于上周发布,this announcement。有一个关于使用 blob here 的最新教程。您查看的教程看起来像是在 0.20.0 之前的版本上,所以如果您想完全按照所写的那样使用它,您需要相当远的回归。我会跟进它的作者,看看他们是否可以更新它。 如果我的data_path是``` "containername" => "blobname" => "folder" => "subfolder" => "subfolder" =>"dataset.csv"```怎么可能我访问? @Hayat - 如果您在访问特定 blob 时遇到问题,请发布一个新问题,因为您的问题超出了此特定问题的范围。另请注意,Azure 存储中没有“子文件夹”(除非使用 ADLS)——只有容器;这些“文件夹”只是带有分隔符的长文件名的一部分。【参考方案3】:

我在使用 pip 安装 azure 软件包后遇到了同样的问题,正如所选答案所暗示的,这可以通过安装 azure.storage 0.33.0 来解决。

但是,如果您使用 pip,您可能需要使用“--upgrade”选项才能正确安装(这是我的经验):

pip install azure-storage --upgrade

【讨论】:

【参考方案4】:

我在 Ubuntu 服务器 16.04 LTS 上安装了 1.0.3 版(包括 azure.storage 0.20 版),当我卸载并重新安装 azure 包时,pip 仅重新安装了 azure.storage 0.20 版。这是根据 azure package v. 2.0.0rc6 的 pypi 页面,该页面建议从 1.0.3 升级到版本 2,您应该这样做

sudo pip3 uninstall azure
sudo pip3 install azure

pypi/azure

相反,这对我有用,

sudo pip3 uninstall azure
sudo pip3 install azure==2.0.0rc6

【讨论】:

以上是关于如何在 python 中导入 Azure BlobService?的主要内容,如果未能解决你的问题,请参考以下文章

在 azure ml 部署环境中导入自定义 python 模块

如何在 Azure DevOps 中导入任务组

在 Azure 门户中导入带有链接服务的管道

在 Microsoft Azure 中导出和导入入站安全规则

在vue中导入导出excel文件

如何在 Python 中生成 Azure blob SAS URL?