如何在Mac OS X上安装leveldb

4
我正在尝试在我的Python项目中使用LevelDB。我选定了Python绑定PlyVel http://plyvel.readthedocs.org/en/latest/installation.html,它似乎是维护和文档都更好的Python绑定。

然而,安装plyvel失败了:

plyvel/_plyvel.cpp:359:10: 致命错误:找不到'leveldb/db.h'文件

#include "leveldb/db.h"

所以我相信我需要在我的计算机上安装leveldb。我没有找到适用于macOSX的leveldb安装指南。我已经下载了leveldb的tarball,https://code.google.com/p/leveldb/downloads/list。Makefile可以编译代码,但plylevel仍然失败。我应该如何编译LevelDB,使其二进制文件可供PlyVel使用?

5个回答

12

在Mac OS X上安装leveldb最简单的方法是使用homebrew

使用homebrew,您只需要运行:

brew install leveldb

2
如果您是MacPorts用户,可以使用sudo port install leveldb安装共享库。
根据您如何安装pip / python,您可能还需要告诉pip在哪里找到必要的文件。根据https://dev59.com/M2Mk5IYBdhLWcg3w_yzo#22942120,您需要执行类似以下命令的操作:
pip install --global-option=build_ext --global-option='-L/opt/local/lib' plyvel

https://github.com/wbolster/plyvel/issues/34#issuecomment-118568110 对我有用,但没有尝试在 /usr/local/include 选项下进行。 - Gaurav Gupta

2
在 OS X 中,似乎 /usr/local/include 这个目录(包含 db.h 文件)对于 gcc 不可见。
您需要安装 Apple 命令行工具:
xcode-select --install

plyvel在此之后会被编译。

链接到 GH 问题。似乎是一个OS X的问题。


我运行了 xcode-select --install 命令,但问题仍然存在。我确认在 usr/local/include 目录下有 leveldb 的头文件。 - Paul Razvan Berg

1

如jAlpedrinha所述

在Mac OS X上安装leveldb最简单的方法是使用homebrew。

使用homebrew,您只需要运行:

brew install leveldb

您还需要安装gcc或clang。 如果在安装Python绑定时遇到问题,请参考此处https://github.com/wbolster/plyvel/issues/95。 请更改您的pylvel setup.py,并像这样添加extra-compile-args。
if platform.system() == 'Darwin':
     extra_compile_args += ['-mmacosx-version-min=10.7', '-stdlib=libc++', '-Wall', '-g', '-x', 'c++', '-std=c++11']

现在运行 pip install sphinx,可能会遇到以下错误: gcc: error: plyvel/_plyvel.cpp: No such file or directory
原因和解决方法:
Plyvel uses cython to bind the leveldb C++ implementation to python. 
So when you're using the setup script, you have to make sure that plyvel 
cython modules have been compiled to .cpp files.

To do that just run make it will handle this opeartion for you. 
Just make sure you have sphinx installed : pip install sphinx

Once make is run, you can safely python setup.py install. 

0

我不熟悉leveldb,但大多数直接二进制安装需要你运行./configure,然后make,最后make install才能实际安装二进制文件。你应该尝试这样做。

此外,根据这个github页面,你也可以使用gem来安装它:https://github.com/DAddYE/leveldb


2
该目录中没有配置文件,也没有make文件中的安装目标。 - konquestor
我相信那个 gem 是用于安装 Ruby 绑定的。但我要使用 Python。而且似乎需要单独编译 LevelDB 才能使用 Python 绑定。 - konquestor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接