libmongocrypt的Python绑定
项目描述
- 信息:
libmongocrypt的Python绑定。有关最新源代码,请参阅GitHub。
关于
Python封装库,用于libmongocrypt,支持驱动程序中的客户端加密。PyMongoCrypt使用cffi和cryptography。
PyMongoCrypt支持Python 3.8+和PyPy3.9+。
支持/反馈
有关PyMongoCrypt的问题、疑问或反馈,请查看我们的支持渠道。请勿直接通过电子邮件联系PyMongoCrypt的开发者解决问题或提问 - 您更有可能在Google Groups的mongodb-user列表上得到回答。
错误/功能请求
认为找到了错误?想在PyMongoCrypt中看到新功能?请在我们的问题管理工具JIRA中提交一个案例
JIRA中所有驱动程序项目(例如PYTHON、CSHARP、JAVA)和核心服务器项目(例如SERVER)的错误报告是公开的。
如何寻求帮助
在提交问题时,请包含以下所有信息
重现问题的详细步骤,包括完整的跟踪回溯(如果可能)。
使用的确切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项目中识别到安全漏洞,请根据以下说明报告:此处。
安装
可以使用pip安装PyMongoCrypt
$ python -m pip install pymongocrypt $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.9.0
PyMongoCrypt为macOS、Windows和许多Linux版本提供了包含嵌入式libmongocrypt构建的wheels。
在Linux上从wheels安装需要pip 19或更高版本,因为它增加了对manylinux2010 wheels的支持。较旧的pip版本将尝试使用pymongocrypt-X.Y.tar.gz源分布进行安装,这需要按照以下说明下载和安装libmongocrypt。用户可以通过运行以下命令升级到pip 19:
$ python -m pip install --upgrade 'pip>=19'
从源安装
从源安装(或pymongocrypt-X.Y.tar.gz源分布,或Linux上的pip < 19)需要安装libmongocrypt的额外步骤。首先,从源安装PyMongoCrypt
$ git clone git@github.com:mongodb/libmongocrypt.git $ python -m pip install ./libmongocrypt/bindings/python
然后,安装libmongocrypt
安装libmongocrypt
libmongocrypt在evergreen上持续构建和发布。包含在所有支持的变体上构建的libmongocrypt的最新tarball在此发布。下载并解压缩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 debian92 rhel-80-64-bit rhel72-zseries-test ubuntu1804-arm64 amazon2-arm64 linux-64-amazon-ami rhel-81-ppc64el suse12-64 ubuntu2004-64 amazon2023 macos rhel-82-arm64 suse15-64 ubuntu2004-arm64 amazon2023-arm64 rhel-62-64-bit rhel-83-zseries ubuntu1604 ubuntu2204-64 debian10 rhel-70-64-bit rhel-91-64-bit ubuntu1604-arm64 ubuntu2204-arm64 debian11 rhel-71-ppc64el rhel-91-arm64 ubuntu1804-64 windows-test
macOS
$ # Set PYMONGOCRYPT_LIB for macOS: $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/macos/lib/libmongocrypt.dylib $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.9.0
Windows
$ # Set PYMONGOCRYPT_LIB for Windows: $ chmod +x $(pwd)/libmongocrypt-all/windows-test/bin/mongocrypt.dll $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/windows-test/bin/mongocrypt.dll $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.9.0
Linux:为您的平台设置libmongocrypt构建,例如对于Ubuntu 22.04 x86_64
$ # Set PYMONGOCRYPT_LIB for Ubuntu 22.04 x86_64: $ export PYMONGOCRYPT_LIB=$(pwd)/libmongocrypt-all/ubuntu2204-64/lib/libmongocrypt.so $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.9.0 $ # Check that native crypto is enabled for better performance: $ python -c 'from pymongocrypt.binding import lib;print(lib.mongocrypt_is_crypto_available())' True
注意如果您的Linux平台不可用,通用的RHEL 6.2 x86_64“nocrypto”构建仍然应该是兼容的,但是“nocrypto”构建会导致加密和解密性能降低
$ # 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.9.0 $ python -c 'from pymongocrypt.binding import lib;print(lib.mongocrypt_is_crypto_available())' False
其他安装方法(brew、rpm、yum、apt-get、deb等)在此处有记录:https://mongodb.ac.cn/docs/manual/core/csfle/reference/libmongocrypt/#linux-installation
依赖关系
PyMongoCrypt支持Python 3.8+和PyPy3.9+。
PyMongoCrypt需要cffi和cryptography。
如果没有使用官方轮子安装,PyMongoCrypt 还需要在您的系统上安装 libmongocrypt。如果没有安装 libmongocrypt,您将看到如下错误
>>> import pymongocrypt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pymongocrypt/__init__.py", line 15, in <module>
from pymongocrypt.binding import libmongocrypt_version, lib
File "pymongocrypt/binding.py", line 803, in <module>
lib = ffi.dlopen(os.environ.get('PYMONGOCRYPT_LIB', 'mongocrypt'))
File "/.../lib/python3.8/site-packages/cffi/api.py", line 146, in dlopen
lib, function_cache = _make_ffi_library(self, name, flags)
File "/.../lib/python3.8/site-packages/cffi/api.py", line 828, in _make_ffi_library
backendlib = _load_backend_lib(backend, libname, flags)
File "/.../lib/python3.8/site-packages/cffi/api.py", line 823, in _load_backend_lib
raise OSError(msg)
OSError: ctypes.util.find_library() did not manage to locate a library called 'mongocrypt'
使用 PYMONGOCRYPT_LIB 环境变量来加载本地安装的 libmongocrypt 构建版本,而不依赖于特定平台的库路径环境变量,如 LD_LIBRARY_PATH。例如
$ export PYMONGOCRYPT_LIB='/path/to/libmongocrypt.so' $ python -c "import pymongocrypt; print(pymongocrypt.libmongocrypt_version())" 1.9.0
测试
运行测试的最简单方法是,在分发根目录中运行 python setup.py test。
项目详情
pymongocrypt-1.11.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 97d15e8f08ae0ff84e35857d20b9b921cede0812b0552b8533f99534a02a3cb7 |
|
MD5 | c77e4c66f9fec0bf9df06a1a780400b2 |
|
BLAKE2b-256 | 97d251d0adbe1e5f934ca37a1d838cbd4d1b6949c3e555475565a0bfa77f102e |
pymongocrypt-1.11.0-py3-none-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 281663bdb018afdfdbfed6d680ee922435984c0c1588cb209a5edc7f4ffb279a |
|
MD5 | 20e94ce5dfbd75be3112e0ce254349de |
|
BLAKE2b-256 | 80670c5214137443a02d90284f6235c99a51a9deec152260cff954e609601a8f |
pymongocrypt-1.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 983f88f0450525c4730a6b9f76a2c803d0deda77e006f32d6e8fce7fdc961e92 |
|
MD5 | 776a5491d03eb01d881462c018430eef |
|
BLAKE2b-256 | 3ca04c8a8e6218b4cbf20f63045635f93f1fee33c379540f853e37bc2bb0610f |
pymongocrypt-1.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 62de1ecff59067f2c0894b26623810d767adfc99b1e142f708f5895f703a8bcf |
|
MD5 | 9b71387795a6e0c8f98e72bcb200299c |
|
BLAKE2b-256 | a6822d4747a64001acddc3d54dd810ec26317818f068cae8e7eb489d12bbf7ca |
pymongocrypt-1.11.0-py3-none-macosx_11_0_universal2.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5df8db29b2a68b56b9ae7c4bbc56117aacfe79da42f4611023704a45d2e06a50 |
|
MD5 | d95327028b252e0be08075974dca6c78 |
|
BLAKE2b-256 | 2681084516764054f79f724e5c0c9876c983d57111e5b6b13ad27955be0c568f |