libmongocrypt的python绑定
pymongocrypt的Python项目详细描述
Info: | Python bindings for libmongocrypt. See GitHub for the latest source. |
---|---|
Author: | Shane Harvey |
关于
支持客户端加密的libmongocrypt的python包装库 在司机中。pymongocrypt使用cffi和 cryptography。
对客户端加密的支持处于测试阶段。向后打破改变 可能在最终版本发布之前制作。
pymongocrypt支持python 2.7、3.4+和pypy3.5+。
支持/反馈
有关pymongocrypt的问题、问题或反馈,请查看 我们的support channels。拜托 不要直接向Pymongocrypt的任何开发人员发送电子邮件,提出问题或 问题-你更有可能在google群组的mongodb-user列表中得到答案。
错误/功能请求
你觉得你发现了虫子?想在Pymongocrypt中看到一个新功能吗? 请在我们的问题管理工具jira中打开一个案例:
- Create an account and login。
- 导航到the PYTHON project。
- 单击create issue-请提供尽可能多的关于问题类型和如何复制它的信息。
jira中所有驱动程序项目(即python、csharp、java)和 核心服务器(即服务器)项目是public。
如何寻求帮助
打开问题时请包括以下所有信息:
重现问题的详细步骤,包括完整的回溯(如果可能)。
使用的python版本,补丁级别:
$ python -c "import sys; print(sys.version)"
使用的pymongocrypt的确切版本:
$ python -c "import pymongocrypt; print(pymongocrypt.__version__)"
pymongocrypt使用的libbmongocrypt的确切版本:
$ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
使用的pymongo的确切版本(如果适用),补丁级别:
$ python -c "import pymongo; print(pymongo.version); print(pymongo.has_c())"
操作系统和版本(如Windows 7、OSX 10.8,…)
Web框架或异步网络库(如果有的话)与版本(例如 django 1.7,mod_wsgi 4.3.0,gevent 1.0.1,tornado 4.0.2,…)
安全漏洞
如果您在驱动程序或任何其他 MongoDB项目,请按instructions here上报。
安装
pymongocrypt可以使用pip:
$ python -m pip install pymongocrypt $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.0.0-beta4
pymongocrypt为macos、windows和manylinux2010提供轮子,其中包括 嵌入的libmongocrypt构建。
从源安装
从源安装(或pymongocrypt-x.y.tar.gz源发行版) 需要安装libmongocrypt的额外步骤。首先,安装 pymongocrypt来源:
$ git clone git@github.com:mongodb/libmongocrypt.git $ python -m pip install ./libmongocrypt/bindings/python
接下来,安装libmongocrypt。
LibMongocrypt[在Evergreen上持续建造和出版] (https://evergreen.mongodb.com/waterfall/libmongocrypt)。 最新的tarball包含基于所有支持的变体构建的libmongocrypt (在这里发表)[https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz]。 下载并解压缩libmongocrypt-all.tar.gz并设置 PYMONGOCRYPT_LIB指向操作系统libmongocrypt.so文件的路径。 例如:
$ curl -O https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz $ mkdir libmongocrypt-all && tar xzf libmongocrypt-all.tar.gz -C libmongocrypt-all $ ls libmongocrypt-all amazon2 rhel-67-s390x suse12-64 ubuntu1604-s390x debian92 rhel-70-64-bit suse12-s390x ubuntu1804-64 linux-64-amazon-ami rhel-71-ppc64el suse15-64 ubuntu1804-arm64 macos rhel72-zseries-test ubuntu1604 windows-test rhel-62-64-bit rhel76 ubuntu1604-arm64
Mac操作系统:
$ # Set PYMONGOCRYPT_LIB for macOS: $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/macos/nocrypto/lib/libmongocrypt.dylib $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.0.0-beta4
窗口:
$ # Set PYMONGOCRYPT_LIB for Windows: $ chmod +x $(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/windows-test/nocrypto/bin/mongocrypt.dll $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.0.0-beta4
Linux:
$ # Set PYMONGOCRYPT_LIB for RHEL 6.2 x86_64: $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/rhel-62-64-bit/nocrypto/lib64/libmongocrypt.so $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.0.0-beta4
依赖关系
pymongocrypt支持cpython 2.7、3.4+、pypypy和pypy3.5+。
pymongocrypt需要cffi和 cryptography。
pymongocrypt还要求在 系统。如果没有安装libmongocrypt,您将看到一个错误 像这样:
>>>importpymongocryptTraceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"pymongocrypt/__init__.py",line15,in<module>frompymongocrypt.bindingimportlibmongocrypt_version,libFile"pymongocrypt/binding.py",line803,in<module>lib=ffi.dlopen(os.environ.get('PYMONGOCRYPT_LIB','mongocrypt'))File"/.../lib/python3.7/site-packages/cffi/api.py",line146,indlopenlib,function_cache=_make_ffi_library(self,name,flags)File"/.../lib/python3.7/site-packages/cffi/api.py",line828,in_make_ffi_librarybackendlib=_load_backend_lib(backend,libname,flags)File"/.../lib/python3.7/site-packages/cffi/api.py",line823,in_load_backend_libraiseOSError(msg)OSError:ctypes.util.find_library()didnotmanagetolocatealibrarycalled'mongocrypt'
使用PYMONGOCRYPT_LIB环境变量加载本地安装的 libmongocrypt构建,不依赖于特定于平台的库路径环境 变量,如LD_LIBRARY_PATH。例如:
$ export PYMONGOCRYPT_LIB='/path/to/libmongocrypt.so' $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())"
测试
运行测试的最简单方法是在中运行python setup.py test 分布的根。