我对使用 microsoft azure 服务还很陌生,并尝试按照 https://learn.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
BlockBlobService
类位于 azure.storage.blob.blockblobservice
模块中。但是当我尝试导入它时,解释器也会抛出导入错误。
大多数建议的解决方案都是围绕版本的升级/降级,但是,愚蠢的我,不知怎的,我什至无法像其他模块那样找到azure模块的版本。另外,似乎许多解决方案都是针对在 Linux 上运行的 pip3 的,因此我在 Windows 上使用 conda 4.5.11。那么如何让azure API发挥作用呢?
最佳答案
截至 2020 年 11 月,Azure 维护两个版本的存储 SDK:
2.1 被认为是 API 的旧版本 ( Link ):
This quickstart uses a legacy version of the Azure Blob storage client library. To get >started with the latest version, see Quickstart: Manage blobs with Python v12 SDK.
BlockBlobService
位于 v2.1 中,应避免使用。 改用 v12 版本。
关于python-3.x - BlockBlobService 类位于 Python Azure 模块中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52644426/