Install & Compatibility
Where this runs
tested against v0.7.3 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.000s · 22.7MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 1.9s · import 0.000s · 23MB
20MB installed
● package 20MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
compress
✓ snappy.compress
Called as a function from the top-level 'snappy' module.
decompress
✓ snappy.decompress
Called as a function from the top-level 'snappy' module.
StreamCompressor
✓ snappy.StreamCompressor
Used for incremental compression of data streams.
StreamDecompressor
✓ snappy.StreamDecompressor
Used for incremental decompression of data streams.
This quickstart demonstrates basic one-shot compression/decompression and the use of `StreamCompressor` and `StreamDecompressor` for handling larger data in chunks. Ensure the underlying Snappy C library is installed first.
import snappy
# Basic compression and decompression
original_data = b"This is some data to be compressed using snappy!" * 100
compressed_data = snappy.compress(original_data)
decompressed_data = snappy.decompress(compressed_data)
print(f"Original size: {len(original_data)} bytes")
print(f"Compressed size: {len(compressed_data)} bytes")
print(f"Decompressed data matches original: {original_data == decompressed_data}")
# Streaming compression and decompression
compressor = snappy.StreamCompressor()
compressed_stream_chunks = []
# Simulate sending data in chunks
for chunk in [b'part one', b'part two', b'part three']:
compressed_stream_chunks.append(compressor.compress(chunk))
compressed_stream_chunks.append(compressor.flush()) # Important to flush remaining data
full_compressed_stream = b''.join(compressed_stream_chunks)
decompressor = snappy.StreamDecompressor()
decompressed_stream_chunks = []
# Simulate receiving and decompressing data in chunks
for chunk in [full_compressed_stream[:15], full_compressed_stream[15:]]:
decompressed_stream_chunks.append(decompressor.decompress(chunk))
final_decompressed_stream = b''.join(decompressed_stream_chunks)
print(f"Stream decompressed data: {final_decompressed_stream}")
print(f"Stream decompressed data matches original: {final_decompressed_stream == b'part onepart twopart three'}")
Errors
Common errors & fixes
fatal error: snappy-c.h: No such file or directory
The C/C++ development headers for the Snappy library are not installed on your system, which are required to compile the `python-snappy` package from source.
fixInstall the Snappy development headers using your system's package manager (e.g., `sudo apt-get install libsnappy-dev` on Debian/Ubuntu, `sudo yum install snappy-devel` on Fedora/RHEL, or `brew install snappy` on macOS). Then retry `pip install python-snappy`.
ModuleNotFoundError: No module named 'snappy'
The `python-snappy` library has not been installed in your current Python environment or is not accessible.
fixInstall the library using pip: `pip install python-snappy`.
AttributeError: 'bytes' object has no attribute 'decode'
You are attempting to call the `.decode()` method directly on the compressed bytes returned by `snappy.compress()`, but compressed data must first be decompressed before it can be decoded into a string.
fixFirst decompress the data using `snappy.decompress()`, then decode the resulting bytes if you expect a string. Example: `original_bytes = snappy.decompress(compressed_data); original_string = original_bytes.decode('utf-8')`. ModuleNotFoundError: No module named 'python_snappy'
The `python-snappy` package exposes its functionality under the module name `snappy`, not `python_snappy` (which is the package name you install via pip).
fixImport the library using `import snappy` or `from snappy import compress, decompress`.
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"
On Windows, compiling Python packages with C/C++ extensions (like `python-snappy`) requires the Microsoft Visual C++ build tools, which are often missing or outdated.
fixDownload and install the "Build Tools for Visual Studio" from `https://visualstudio.microsoft.com/visual-cpp-build-tools/`, ensuring you select the "Desktop development with C++" workload during installation. Then retry `pip install python-snappy`.
Upgrade
Version history
0.7.3latest on PyPI · released Aug 29, 2024
Audit
Dependencies
No dependency data recorded yet.