如何在 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 模块