无法将Python客户端连接到Azure Cosmo BD:导入PydocumentDB失败



我在python 2.7内置的Mac上工作

我用sudo easy_install pip

安装了PIP

我用sudo pip install azure

安装了Azure

现在,我为Azure写了一个简单的Python客户端:

import pydocumentdb
from pydocumentdb import errors
from pydocumentdb import documents
from pydocumentdb import document_client
import config as cfg
HOST = cfg.settings['host']
MASTER_KEY = cfg.settings['master_key']
DATABASE_ID = cfg.settings['database_id']
COLLECTION_ID = cfg.settings['collection_id']
database_link = 'dbs/' + DATABASE_ID
@staticmethod
def list_collections(client):
        print("n5. List all Collection in a Database")
        print('Collections:')
        collections = list(client.ReadCollections(database_link))
        if not collections:
            return
        for collection in collections:
            print(collection['id'])
def run_sample():
    with IDisposable(document_client.DocumentClient(HOST, {'masterKey': MASTER_KEY} )) as client:
        try:
            # list all collection on an account
            list_collections(client)  
        except errors.HTTPFailure as e:
            print('nrun_sample has caught an error. {0}'.format(e.message))
        finally:
            print("nrun_sample done")
if __name__ == '__main__':
    try:
        run_sample()
    except Exception as e:
            print("Top level Error: args:{0}, message:{1}".format(e.args,e.message)) 

然后,当我运行程序时,我会得到错误

trackback(最近的最新呼叫(:文件" readdatabase.py",第1行, 在 导入pydocumentDB Importerror:没有名为PydocumentDB的模块

所以我读了两个原因:Azure未安装或Sys.Path

问题

我做了一个示例来显示sys.path

import sys
if __name__ == '__main__':
    print sys.path

给我结果:

['/Users/xxx/coding/python/projects/document_client', '/Library/Python/2.7/site-packages/adal-0.5.0-py2.7.egg', '/Library/Python/2.7/site-packages/keyring-11.0.0-py2.7.egg', '/Library/Python/2.7/site-packages/msrest-0.4.26-py2.7.egg', '/Library/Python/2.7/site-packages/cryptography-2.1.4-py2.7-macosx-10.13-intel.egg', '/Library/Python/2.7/site-packages/python_dateutil-2.6.1-py2.7.egg', '/Library/Python/2.7/site-packages/requests-2.18.4-py2.7.egg', '/Library/Python/2.7/site-packages/PyJWT-1.5.3-py2.7.egg', '/Library/Python/2.7/site-packages/enum34-1.1.6-py2.7.egg', '/Library/Python/2.7/site-packages/certifi-2018.1.18-py2.7.egg', '/Library/Python/2.7/site-packages/isodate-0.6.0-py2.7.egg', '/Library/Python/2.7/site-packages/requests_oauthlib-0.8.0-py2.7.egg', '/Library/Python/2.7/site-packages/ipaddress-1.0.19-py2.7.egg', '/Library/Python/2.7/site-packages/cffi-1.11.4-py2.7-macosx-10.13-intel.egg', '/Library/Python/2.7/site-packages/asn1crypto-0.24.0-py2.7.egg', '/Library/Python/2.7/site-packages/idna-2.6-py2.7.egg', '/Library/Python/2.7/site-packages/six-1.10.0-py2.7.egg', '/Library/Python/2.7/site-packages/urllib3-1.22-py2.7.egg', '/Library/Python/2.7/site-packages/chardet-3.0.4-py2.7.egg', '/Library/Python/2.7/site-packages/oauthlib-2.0.6-py2.7.egg', '/Library/Python/2.7/site-packages/pycparser-2.18-py2.7.egg', '/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC']

所以我看不到azure libs。

实际上我认为pydocumentdb是Azure Python SDK的一部分,事实并非如此执行pip install pydocumentdb解决了问题

最新更新