| single |
===============================================
PyNaCl: Python binding to the libsodium library
===============================================
:alt: Latest Version
PyNaCl is a Python binding to `libsodium`_, which is a fork of the
`Networking and Cryptography library`_. These libraries have a stated goal
of
improving usability, security and speed. It supports Python 3.8+ as well as
PyPy 3.
.. _libsodium: https://github.com/jedisct1/libsodium
.. _Networking and Cryptography library: https://nacl.cr.yp.to/
Features
--------
* Digital signatures
* Secret-key encryption
* Public-key encryption
* Hashing and message authentication
* Password based key derivation and password hashing
`Changelog`_
------------
.. _Changelog: https://pynacl.readthedocs.io/en/latest/changelog/
Installation
============
Binary wheel install
--------------------
PyNaCl ships as a binary wheel on macOS, Windows and Linux manylinux1
[#many]_ ,
so all dependencies are included. Make sure you have an up-to-date pip
and run:
.. code-block:: console
$ pip install pynacl
Faster wheel build
------------------
You can define the environment variable LIBSODIUM_MAKE_ARGS to pass
arguments to make
and enable `parallelization`_:
.. code-block:: console
$ LIBSODIUM_MAKE_ARGS=-j4 pip install pynacl
Linux source build
------------------
PyNaCl relies on `libsodium`_, a portable C library. A copy is bundled
with PyNaCl so to install you can run:
.. code-block:: console
$ pip install pynacl
If you'd prefer to use the version of libsodium provided by your
distribution, you can disable the bundled copy during install by running:
.. code-block:: console
$ SODIUM_INSTALL=system pip install pynacl
.. warning:: Usage of the legacy easy_install command provided by
setuptools
is generally discouraged, and is completely unsupported in PyNaCl's
case.
.. _parallelization:
https://www.gnu.org/software/make/manual/html_node/Parallel.html
.. _libsodium: https://github.com/jedisct1/libsodium
.. [#many] [manylinux1 wheels]
are built on a baseline linux environment based on Centos 5.11
and should work on most x86 and x86_64 glibc based linux environments.
GNU Make (gmake) may be required for newer versions of PyNaCl. You can
set the binary to use by setting the MAKE environment variable:
.. code-block:: console
$ MAKE=gmake pip install pynacl
Changelog
=========
1.6.1 (2025-11-10)
------------------
* The MAKE environment variable can now be used to specify the make
binary that should be used in the build process.
|