【问题标题】:Where is the BlockBlobService Class Located in Python Azure Module?BlockBlobService 类位于 Python Azure 模块中的什么位置?
【发布时间】:2019-03-09 17:03:00
【问题描述】:

我对使用 microsoft azure 服务并尝试遵循https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-python 在 Windows PC 上的 conda 4.5.11 发行版中使用 Python 3.5.6 中的教程非常陌生。

我在导入 azure 时遇到的第一个问题是我无法以通常的方式看到版本。这意味着

azure.__version__ 

给出一个错误。

然后,这行代码给了我一个错误,说它既不能导入名称 BlockBlobService,也不能导入 PublicAccess。似乎两者都已被弃用,或者我自己正在使用一些旧版本。

from azure.storage.blob import BlockBlobService, PublicAccess  #Option 1

但是,以下导入正在运行。

from azure.storage.blob import BlobService #Option 2 

但是这个问题是在我创建一个本地文件并尝试使用create_blob_from_path 方法上传之后(如教程中所建议的那样),该方法不存在或已弃用。

我在网络上查看了此 BlockBlobService 问题的解决方案,似乎一直对正确的模块层次结构和要导入的类名感到困惑。例如,一位用户从库中获得了一些官方文档,该文档对此提出了建议,但这也不起作用。

from azure.storage import BlobService #Option 3

还有其他人对此报告了一些投诉,至少在我的系统上运行。但这不会导入所需的 Blob 对象。

import azure.storage.blob #Option 4

此外,根据本文档,https://docs.microsoft.com/en-us/python/api/azure-storage-blob/azure.storage.blob.blockblobservice.blockblobservice?view=azure-python

BlockBlobService 类位于azure.storage.blob.blockblobservice 模块中。但是当我尝试导入时,解释器也会抛出导入错误。

大多数提议的解决方案都围绕着一些版本的升级/降级,但是,愚蠢的我,不知何故,我什至无法像其他模块那样找到 azure 模块的版本。此外,似乎许多解决方案都适用于在 Linux 上运行的 pip3,因此我在 Windows 上使用 conda 4.5.11。那么如何让 azure API 工作呢?

【问题讨论】:

    标签: python-3.x azure azure-storage azure-blob-storage conda


    【解决方案1】:

    截至 2020 年 11 月,Azure 维护两个版本的存储 SDK:

    2.1 被认为是 API 的旧版本 (Link):

    本快速入门使用旧版 Azure Blob 存储客户端库。要>开始使用最新版本,请参阅快速入门:使用 Python v12 SDK 管理 blob。

    BlockBlobService 位于 v2.1 中,应避免使用。 改用 v12 版本

    【讨论】:

      【解决方案2】:

      在 Windows 上,您应该使用pip install azure

      我的环境是带有python 3.6.5的windows 10,但是我没有使用conda。

      首先在cmd中运行pip install azure,截图如下:

      然后在pycharm中,尝试使用from xxx import xx,截图如下:

      对于BlockBlobService

      对于PublicAccess

      BlockBlobService 位置:

      【讨论】:

      • 不幸的是,这不再起作用,我在尝试“pip install azure”时收到以下错误消息:从 v5.0.0 开始,“azure”元包已被弃用,无法再安装。 “BlockBlobService”类是否有任何替代品(似乎在较新版本的“azure-storage-blob”中被删除)?
      • @user1432032,是的,在较新的版本中已将其删除。您应该在较新的版本中使用BlobServiceClient
      猜你喜欢
      • 2011-12-09
      • 2016-06-08
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多