在 python 中导入 fastparquet 时 snappy 出错

Posted

技术标签:

【中文标题】在 python 中导入 fastparquet 时 snappy 出错【英文标题】:error with snappy while importing fastparquet in python 【发布时间】:2017-11-02 05:32:02 【问题描述】:

我在已经安装了 python (3.6) 和 anaconda 的 EC2 服务器中安装了以下模块:

活泼 pyarrow s3fs 快速镶木地板

除了 fastparquet 外,其他一切都适用于导入。当我尝试导入 fastparquet 时,它会引发以下错误:

[username@ip8 ~]$ conda -V
conda 4.2.13
[username@ip-~]$ python
    Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 12:22:00)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
     import fastparquet
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/username/anaconda3/lib/python3.6/site-packages/fastparquet/__init__.py", line 15, in <module>
        from .core import read_thrift
      File "/home/username/anaconda3/lib/python3.6/site-packages/fastparquet/core.py", line 11, in <module>
        from .compression import decompress_data
      File "/home/username/anaconda3/lib/python3.6/site-packages/fastparquet/compression.py", line 43, in <module>
        compressions['SNAPPY'] = snappy.compress
    AttributeError: module 'snappy' has no attribute 'compress'

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

不幸的是,python 领域中有很多东西叫做“snappy”。我相信您可能弄错了,在这种情况下,以下 conda 命令之一应该可以为您解决此问题:

conda install python-snappy

conda install python-snappy -c conda-forge

后者稍微更新一些(发布在线程应用程序中可能很重要的 GIL)。

【讨论】:

根据您的建议,我通过以下命令安装了它conda install -c conda-forge python-snappy=0.5.1 但是当我尝试导入 fastparquet @mdurant 时仍然出现同样的错误 我需要卸载现有的 'snappy' 包并重新安装 fastparaquet 吗?从 fastparquet 的 source code 看来,它似乎是直接导入 snappy 本身。 我厌倦了使用 conda remove snappy 删除 snappy。它删除了python-snappy: 0.5.1-py36_0 conda-forgesnappy: 1.1.4-1 conda-forge。之后我尝试安装 python snappy conda install -c conda-forge python-snappy=0.5.1,它安装了相同的两个包。但是我在导入 fastparquet @mdurant 时仍然遇到同样的错误 你能做到import snappy; print(snappy.__file__)吗?这将向您显示您从哪里导入,我假设这是您可能可以删除的其他一些“活泼”。 它说&gt;&gt;&gt; print(snappy.__file__) /home/my_username/anaconda3/lib/python3.6/site-packages/snappy/__init__.py@mdurant

以上是关于在 python 中导入 fastparquet 时 snappy 出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中导入 pytraj?

在 Python 中导入模块的问题

如何在 Python 文件中导入 Kotlin 文件

如何在python中导入*作为别名?

Caffe没有在python中导入

如何在python中导入文件?