Tftpy is a pure Python TFTP implementation that includes both client and server classes. It supports RFCs 1350, 2347, 2348, and the tsize option from RFC 2349, with hooks for progress indicators. The current version is 0.8.7, released on February 4, 2026. The project is actively maintained, with regular updates and bug fixes.
pip install tftpyVerified import paths — ran on the pinned version, not inferred.
This quickstart demonstrates a basic TFTP server listening on a non-privileged port (6969) and a client downloading a file from it. The server creates a temporary root directory and a sample file. The client then connects to localhost and attempts to download this file. The server runs in a separate thread to allow the client to operate.
Upgrade to tftpy version 0.8.0 or later and ensure your Python environment is 3.8+.
Ensure the directory specified for the TFTP server's root exists before instantiating `tftpy.TftpServer` (e.g., `os.makedirs(path, exist_ok=True)`).
Run your server application with appropriate permissions, or use a non-privileged port (e.g., above 1024) for testing and development.
Update to tftpy 0.8.1 or later to ensure proper logging and security. If you were customising logging with `log.warn`, update to `log.warning`.
Upgrade your Python environment to 3.8 or newer, and ensure you are using a compatible tftpy version (0.8.0+).
Upgrade to the latest version of tftpy, as significant refactoring and bug fixes have been implemented since version 0.5.0.
Check network connectivity and latency. Ensure your TFTP server (if external) is properly configured and responsive. If using an older tftpy client, update to the latest version, as robustness for unreliable networks and buggy clients (including handling of blank OACK options) has been improved in recent versions.
Ensure the directory you intend to serve files from exists and is accessible before initializing `TftpServer`. You can create it programmatically using `os.makedirs(path, exist_ok=True)`.
No dependency data recorded yet.