无法在Python中使用azure SDK

时间:2015-12-10 23:37:23

标签: python azure

我这样做了:

sudo pip install azure azure-storage azure-servicebus azure-mgmt azure-servicemanagement-legacy

from azure import * 
  

回溯(最近一次呼叫最后一次):文件"",第1行,in    ImportError:没有名为azure的模块

from azure.storage import BlobService
  

回溯(最近一次呼叫最后一次):文件"",第1行,in    ImportError:没有名为azure.storage的模块

3 个答案:

答案 0 :(得分:3)

通过cmd sudo pip install安装的Python包存在于路径/usr/lib/python2.7/usr/local/python2.7等及其子文件夹dist-packages

您可以在Python解释器中编写import sysprint sys.path代码,以显示当前python环境的已完成路径列表。

如果您成功安装了一些软件包,例如azure& azure-storage,您可以找到这些文件与python库路径中的包有关。

但是,运行代码in Import Error: No module named <package-name>import <package-name>时出现错误from <package-name> import <class or object name>。有两个场景会导致问题正常发生。

  1. 套餐未成功安装。
  2. 库路径包含python中的Python系统环境路径sys.path或环境变量中的PYTHONHOME中不存在的包。
  3. 所以我认为你可以尝试通过以下三种方式解决问题。

    1. 通过python代码中的sys.path方法将包路径动态添加到sys.path.append('<package path>')
    2. 检查环境变量PYTHONHOME是否设置。如果设置为PYTHONHOME,python会根据PYTHONHOME将包路径添加到sys.path
    3. 如果您的python环境遇到一些无法恢复的未知错误,您可以尝试在Ubuntu上通过命令sudo apt-get remove python python-pipsudo apt-get updatesudo apt-get install python python-pip重新安装Python。这是一种简单的方式。

答案 1 :(得分:0)

BlobService属于azure.storage.blob而不是azure.storage

它应该是

from azure.storage.blob import BlobService

链接 - https://azure.microsoft.com/en-us/documentation/articles/storage-python-how-to-use-blob-storage/

如果它仍然不适合您,您可能希望使用virtualEnv并在virtualenv中再次执行pip安装

http://docs.python-guide.org/en/latest/dev/virtualenvs/

答案 2 :(得分:0)

我有非常相似的问题。 python2和python3软件包版本之间存在很多混乱,因为没有使用虚拟环境,我还必须将pip降级为18。

但是无论如何,这就是我解决有问题的零件的方式。

找到该软件包的安装位置:

pip show azure    

输出将在 Location 部分中显示软件包的位置:

Name: azure
Version: 4.0.0
Summary: Microsoft Azure Client Libraries for Python
Home-page: https://github.com/Azure/azure-sdk-for-python
Author: Microsoft Corporation
Author-email: azpysdkhelp@microsoft.com
License: MIT License
Location: /usr/local/lib/python3.6/dist-packages
Requires: azure-servicefabric, azure-cosmosdb-table, azure-datalake-store, azure-loganalytics, azure-eventgrid, azure-servicemanagement-legacy, azure-servicebus, azure-graphrbac, azure-storage-blob, azure-mgmt, azure-storage-file, azure-batch, azure-applicationinsights, azure-keyvault, azure-storage-queue
Required-by: 

如果您这样做:

python -c "import sys;print(sys.path)"

您将看到一个点子包装位置列表:

['/app', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

在我的python文件的开头,我添加了:

sys.path.insert( 0, '/usr/local/lib/python3.6/dist-packages' )

这将确保首先检查此包裹的位置。

更新

考虑到早晨,事情为我带来了新的视角。我看到,我的python文件开头有#!/usr/bin/python,该文件说使用错误的解释器并在错误的位置查找pip包。