Skip to content Skip to sidebar Skip to footer

ImportError: Cannot Import Name 'BlobService' When Using Azure Backend

I followed these instructions to set up Azure as my backend service: http://django-storages.readthedocs.io/en/latest/backends/azure.html Also added additional packages per this doc

Solution 1:

In newer versions of azure-storage-blob the import BlockBlobService has been renamed to BlobServiceClient.

Updating your import statement to below should resolve your issue:

from azure.storage.blob import BlobServiceClient

An example of this can seen in the documentation here.


Solution 2:

When you pip install azure, you installed azure-storage 0.34.3 (tutorial 1). When you followed the second tutorial, you installed azure-storage-blob 0.37.0. This is where you got issues, there is massive breaking changes in 0.37.0 in the namespaces:

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

See in the ChangeLog that azure-storage <= 0.36 is incompatible with azure-storage-blob >= 0.37. You silently replaced some code file of 0.34.3 by 0.37.0 version.

In you second test, you said you did:

pip3 install azure-storage-blob
pip3 install azure

Package are still incompatible, but you did it in a reverse order, where you crushed your 0.37.0 version with the 0.34.3 one this time. It's why it works.

TLDR, someone needs to update django-storages to support azure-storage-blob >= 0.37.0. In the mean time, stick to azure-storage <= 0.36 and DON'T install azure-storage-blob at all.


Solution 3:

I had to downgrade to azure-storage-0.20.0 which fixed the issue, the newer versions couldn't find the BlobService class.


Solution 4:

Before the merge the current azure storage library doesn't work. So to get this to work I had to install a private fork of Django storages:

I forked: https://github.com/guydou/django-storages/tree/upgrade_azure and pointed to my own repo:

pip3 install -e 'git+https://github.com/mikebz/django-storages.git#egg=upgrade_azure'

then install blob library and azure SDK:

pip3 install azure
pip3 install azure-storages==0.34.3

After that the configuration seemed to work. The final requirements document from azure were this: (venv) Mikes-MacBook:drhazelapp mikebz$ pip3 freeze

adal==0.4.7
appnope==0.1.0
asn1crypto==0.23.0
astroid==1.5.3
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
certifi==2017.7.27.1
cffi==1.11.2
chardet==3.0.4
cryptography==2.1.1
decorator==4.1.2
Django==1.11.5
django-extensions==1.9.1
-e git+https://github.com/mikebz/django-storages.git@5d073159adc0138f5acef121c2d578f4eba96d7c#egg=django_storages
django-webpack-loader==0.5.0
gunicorn==19.7.1
idna==2.6
ipython==6.2.1
ipython-genutils==0.2.0
isodate==0.6.0
isort==4.2.15
jedi==0.11.0
keyring==10.4.0
lazy-object-proxy==1.3.1
mccabe==0.6.1
msrest==0.4.17
msrestazure==0.4.15
oauthlib==2.0.4
olefile==0.44
parso==0.1.0
pep8==1.7.0
pexpect==4.2.1
pickleshare==0.7.4
Pillow==4.3.0
prompt-toolkit==1.0.15
ptyprocess==0.5.2
pycparser==2.18
Pygments==2.2.0
PyJWT==1.5.3
pylint==1.7.2
python-dateutil==2.6.1
pytz==2017.2
requests==2.18.4
requests-oauthlib==0.8.0
simplegeneric==0.8.1
six==1.10.0
traitlets==4.3.2
urllib3==1.22
wcwidth==0.1.7
whitenoise==3.3.1
wrapt==1.10.11

Solution 5:

Strange... In Azure official documentation, it says you need to from azure.storage.blob import BlockBlobService, but what you did is from azure.storage.blob.blobservice import BlobService and from azure.storage import BlobService.

So why don't you just follow the official documentation?


Post a Comment for "ImportError: Cannot Import Name 'BlobService' When Using Azure Backend"