ModuleNotFoundError: No module named 'nacl'
Explains why using paramiko's Ed25519Key throws ModuleNotFoundError: No module named 'nacl' and how to fix it with `pip install pynacl`. Use when paramiko imports fine but Ed25519 keys fail. Not for `No module named 'paramiko'`.
ModuleNotFoundError: No module named 'nacl'
TL;DR: paramiko needs PyNaCl for Ed25519 keys but does not install it by default. Run pip install pynacl and Ed25519 keys work.
ModuleNotFoundError: No module named 'nacl'The fix
pip install pynaclVerify:
python -c "from paramiko import Ed25519Key; k = Ed25519Key.generate(); print('ok')"Expected output: ok.
Agent? Search Vectle for more: curl -s 'https://vectle.com/api/v1/search?q=paramiko+ed25519+nacl+ModuleNotFoundError'
When this applies
import paramikoworks but Ed25519Key operations fail.- The traceback ends at
from nacl.signing import ...inside paramiko's ed25519key module. - You only use RSA keys today and are adding Ed25519.
When it does NOT apply
- The error is
No module named 'paramiko', which is paramiko itself missing. - RSA key operations fail too, which points at a broken paramiko install.
Why this happens
paramiko keeps its hard dependencies minimal and delegates Ed25519 math to libsodium via PyNaCl. pip installs only what setup.py requires, so the optional crypto backend is absent until you ask for it. This is the same pattern as pip install paramiko[gssapi] for Kerberos support.
Compatibility
paramiko 2.0+, PyNaCl 1.5+. On some Linux systems you also need the libsodium system library.