python-snappy
python-snappy copied to clipboard
`python setup.py install` doesn't install `snappy._snappy_cffi` module
Related: #78, #69
Repro
macOS 10.14.5, in a virtualenv with Python 3.6.9, python-snappy v0.5.4 (commit 602e9c10d743f71bef0bac5e4c4dffa17340d7b3)
git clone https://github.com/andrix/python-snappycd python-snappygit checkout masterpython setup.py buildpython setup.py install
Testing in IPython fails with the following error:
In [1]: import snappy
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
~/Documents/python-snappy/snappy/snappy.py in <module>()
47 try:
---> 48 from ._snappy import UncompressError, compress, decompress, \
49 isValidCompressed, uncompress, _crc32c
ModuleNotFoundError: No module named 'snappy._snappy'
During handling of the above exception, another exception occurred:
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-1-710a7f18823c> in <module>()
----> 1 import snappy
~/Documents/python-snappy/snappy/__init__.py in <module>()
1 from __future__ import absolute_import
2
----> 3 from .snappy import (
4 compress,
5 decompress,
~/Documents/python-snappy/snappy/snappy.py in <module>()
49 isValidCompressed, uncompress, _crc32c
50 except ImportError:
---> 51 from .snappy_cffi import UncompressError, compress, decompress, \
52 isValidCompressed, uncompress, _crc32c
53
~/Documents/python-snappy/snappy/snappy_cffi.py in <module>()
1 from __future__ import absolute_import
2
----> 3 from ._snappy_cffi import ffi, lib
4
5 try:
ModuleNotFoundError: No module named 'snappy._snappy_cffi'
Workaround
python setup.py bdist_eggcd distunzip python_snappy-0.5.4-py3.6-macosx-10.14-x86_64.eggcd snappycp _snappy_cffi.abi3.so "${VIRTUAL_ENV}/lib/python3.6/site-packages/snappy/"
After performing the above steps, it is now possible to import snappy in a python shell without error.
(might also need to copy _snappy.py and _snappy.cpython-36m-darwin.so; not sure)
It appears that python setup.py install does not install these files.
Is this problem solved?I also found the same problem with python 3.6
I was getting a similar error and it turned out the problem was that I needed to brew install snappy to get the necessary underlying libraries.
I also had similar issue with python 3.8.5 on windows. I posted here earlier.
In summary: it is not expected that python-snappy knows how to install the snappy binary shared object. If installing via source, that binary (and dev/headers) must be available at install time. We now have many binary wheels available, but snappy still needs to be installed at run time. If you are using conda, then this binary dependency will be filled for you.
Thanks a lot for the reply. It was installed by conda, as shown in the pkg details in the referenced post, but the error was still there.
I just found a workaround to solve this temprarily: I downloaded the wheel file of python-snappy from the PyPI website and manually installed it via pip install --force-reinstall python_snappy-0.6.0-cp38-cp38-win_amd64.whl and this error disappeared.