首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImportError:使用Azure后端时无法导入名称“BlobService”

ImportError:使用Azure后端时无法导入名称“BlobService”
EN

Stack Overflow用户
提问于 2017-10-12 01:50:28
回答 5查看 22.9K关注 0票数 10

我按照以下说明将Azure设置为我的后端服务:http://django-storages.readthedocs.io/en/latest/backends/azure.html

还为本文档添加了额外的包:https://learn.microsoft.com/en-us/azure/storage/blobs/storage-python-how-to-use-blob-storage

获取此错误:跟踪(最近一次调用):

代码语言:javascript
复制
  File "/usr/local/lib/python3.6/site-packages/storages/backends/azure_storage.py", line 23, in <module>
    from azure.storage.blob.blobservice import BlobService
ModuleNotFoundError: No module named 'azure.storage.blob.blobservice'

……

代码语言:javascript
复制
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/usr/local/lib/python3.6/site-packages/storages/backends/azure_storage.py", line 26, in <module>
    from azure.storage import BlobService
ImportError: cannot import name 'BlobService'
[12/Oct/2017 01:38:00] "POST /upload HTTP/1.1" 500 18034

我的pip3冻结看起来是这样的:

代码语言:javascript
复制
(venv) Mikes-MacBook:drhazelapp mikebz$ pip3 freeze | grep azure
azure==2.0.0
azure-batch==3.0.0
azure-common==1.1.8
azure-datalake-store==0.0.17
azure-graphrbac==0.30.0
azure-keyvault==0.3.7
azure-mgmt==1.0.0
azure-mgmt-authorization==0.30.0
azure-mgmt-batch==4.0.0
azure-mgmt-cdn==0.30.3
azure-mgmt-cognitiveservices==1.0.0
azure-mgmt-compute==1.0.0
azure-mgmt-containerregistry==0.2.1
azure-mgmt-datalake-analytics==0.1.6
azure-mgmt-datalake-nspkg==2.0.0
azure-mgmt-datalake-store==0.1.6
azure-mgmt-devtestlabs==2.0.0
azure-mgmt-dns==1.0.1
azure-mgmt-documentdb==0.1.3
azure-mgmt-iothub==0.2.2
azure-mgmt-keyvault==0.31.0
azure-mgmt-logic==2.1.0
azure-mgmt-monitor==0.2.1
azure-mgmt-network==1.0.0
azure-mgmt-nspkg==2.0.0
azure-mgmt-rdbms==0.1.0
azure-mgmt-redis==4.1.0
azure-mgmt-resource==1.1.0
azure-mgmt-scheduler==1.1.3
azure-mgmt-sql==0.5.3
azure-mgmt-storage==1.0.0
azure-mgmt-trafficmanager==0.30.0
azure-mgmt-web==0.32.0
azure-nspkg==2.0.0
azure-servicebus==0.21.1
azure-servicefabric==5.6.130
azure-servicemanagement-legacy==0.20.6
azure-storage==0.34.3
azure-storage-blob==0.37.0
azure-storage-common==0.37.0
azure-storage-file==0.37.0
azure-storage-nspkg==2.0.0
msrestazure==0.4.14
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-10-12 19:13:41

当您使用pip install azure时,您安装了azure-storage 0.34.3 (教程1)。当您遵循第二个教程时,您安装了azure-storage-blob 0.37.0。这就是您遇到问题的地方,在名称空间中的0.37.0中有大量的急剧变化:

https://github.com/Azure/azure-storage-python/blob/master/BreakingChanges.md#version-0370

在ChangeLog中可以看到,azure-storage <= 0.36与azure-storage-blob >= 0.37不兼容。您悄悄地将0.34.3的代码文件替换为0.37.0版本。

在你的第二次测试中,你说你做了:

代码语言:javascript
复制
pip3 install azure-storage-blob
pip3 install azure

包仍然是不兼容的,但是您以相反的顺序完成了它,这次您用0.34.3版本粉碎了您的0.37.0版本。这就是为什么会起作用。

TLDR,有人需要更新django-存储以支持天蓝色存储-blob >= 0.37.0。同时,坚持azure-storage <= 0.36,根本不安装azure-storage-blob

票数 9
EN

Stack Overflow用户

发布于 2020-01-30 14:29:04

在较新版本的azure-storage-blob中,导入BlockBlobService已重命名为BlobServiceClient

将导入语句更新到下面将解决您的问题:

代码语言:javascript
复制
from azure.storage.blob import BlobServiceClient

这方面的一个例子可以在文档这里中看到。

票数 13
EN

Stack Overflow用户

发布于 2018-03-26 09:04:34

我不得不降级到azure-storage-0.20.0,它解决了这个问题,新版本找不到BlobService类。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46700157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档