2017-10-12 7 views
1

j'ai suivi ces instructions pour mettre en place Azure comme mon service back-end: http://django-storages.readthedocs.io/en/latest/backends/azure.htmlImportError: ne peut pas importer le nom 'BlobService' lors de l'utilisation d'azur Backend

packages supplémentaires a également ajouté par ce document: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-python-how-to-use-blob-storage

Obtenir ce erreur: retraçage (le plus récent appel dernier):

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' 

....

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 

Mon gel PIP3 ressemble à ceci:

(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 

Répondre

1

Lorsque vous pip install azure, vous avez installé azure-storage 0.34.3 (tutoriel 1). Lorsque vous avez suivi le deuxième didacticiel, vous avez installé azure-storage-blob 0.37.0. C'est là que vous avez des problèmes, il y a des changements massifs de rupture dans 0.37.0 dans les espaces de noms:

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

Voir dans le ChangeLog azure-storage < = 0,36 est incompatible avec azure-storage-blob> = 0,37. Vous avez remplacé en mode silencieux un fichier de code de 0.34.3 par la version 0.37.0.

En vous second test, vous avez dit que vous avez fait:

pip3 install azure-storage-blob 
pip3 install azure 

Package sont encore incompatibles, mais vous l'avez fait dans un ordre inverse, où vous écraser votre version 0.37.0 avec le 0.34.3 un ce temps. C'est pourquoi ça marche.

TLDR, quelqu'un doit mettre à jour django-stockages pour soutenir azure-storage-blob> = 0.37.0. Pendant ce temps, respectez azure-storage < = 0.36 et n'installez pas azure-storage-blob du tout.

+0

vous avez raison, les choses ont commencé à casser quand j'ai poussé le conteneur Docker et que je ne faisais plus les installations manuellement. Je vais essayer votre méthode. – mikebz

+0

Donc, simplement installer Django-stockages et azure-storage = 0.36 générer une erreur: Fichier "/usr/local/lib/python3.6/site-packages/storages/backends/azure_storage.py", ligne 26, en azure.storage import BlobService ImportError: impossible d'importer le nom 'BlobService'. Je ne suis pas sûr d'installer plus de bibliothèques et de quelle version pour ne pas obtenir accidentellement un mélange de bibliothèque. – mikebz

0

étrange ... Dans Azure documentation officielle, il est dit que vous devez from azure.storage.blob import BlockBlobService, mais ce que vous avez fait est from azure.storage.blob.blobservice import BlobService et from azure.storage import BlobService. Alors, pourquoi ne pas suivre la documentation officielle?

+0

Azure Le stockage fourni par django semble obsolète. – Sraw

+0

En fait, je n'écris pas ces importations.J'ai un projet Django où j'utilise Azure comme service back-end. L'importation est dans la bibliothèque officielle. Je pense que les gens à travers les versions ou les importations de séquençage travaillent d'une manière ou d'une autre. Vous cherchez ce travail autour. – mikebz

+0

question - est le seul moyen d'utiliser le stockage Azure Blog pour créer votre propre implémentation? – mikebz

0

Avant la fusion, la bibliothèque de stockage azure actuelle ne fonctionne pas. Donc, pour obtenir ce travail que je devais installer une fourche privée de Django stockage:

Je bifurqué: https://github.com/guydou/django-storages/tree/upgrade_azure et montrai mon repo:

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

puis installez la bibliothèque blob et SDK azur:

pip3 install azure 
pip3 install azure-storages==0.34.3 

Ensuite, la configuration semble fonctionner. Le document d'exigences finales d'azur étaient ceci: (venv) Mikes-MacBook: drhazelapp mikebz $ PIP3 geler

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/[email protected]#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