使用pip安装pylibmc时出错

76

你好,当我尝试使用pip在OSX Lion上安装pylibmc时,出现了以下错误:

./_pylibmcmodule.h:42:10: fatal error: 'libmemcached/memcached.h' file not found

#include <libmemcached/memcached.h>

         ^

1 error generated.

error: command 'clang' failed with exit status 1

有什么线索可以解决这个问题吗?


你是否在任何地方安装了libmemcached头文件? - Martijn Pieters
谢谢,我在安装运行djangoproject测试所需的软件包时遇到了这个错误。在此发布它,以便如果新的贡献者遇到此问题并到达此处,他们可以自信地依赖于解决方案 "brew install libmemcached"。 - Deep
10个回答

143

您也可以使用Homebrew安装libmemcached。

brew install libmemcached

之后,pip install pylibmc 对我而言可以直接使用,不需要指定任何额外的参数。


30
我使用Homebrew安装了它并正确链接,但是无论如何pylibmc都找不到它。所以我必须在安装pylibmc时指定libmemcached目录,方法是运行以下命令:sudo pip install pylibmc --install-option="--with-libmemcached=/usr/local/Cellar/libmemcached/1.0.18/" - marcelosalloum
1
你可以尝试执行 brew unlink libmemcached,然后再执行 brew link libmemcached。在我的情况下,链接出现了问题。这应该会创建链接,使得 /usr/local/include/libmemcached/memcached.h 存在。 - Neil
5
这些解决方案对我无效。我不得不执行export CPPFLAGS="-I/usr/local/include"export LDFLAGS="-L/usr/local/lib" - giles
2
在现代的Homebrew安装中,您可能需要指向新的Homebrew根目录,该目录不再位于/usr/local:LIBMEMCACHED=/opt/homebrew pip install pylibmc - btown
1
CPPFLAGS="-I/opt/homebrew/include" pipenv install 对于 M1 适用,但我还没有尝试更短的路径。 - Andrei
显示剩余3条评论

38

这个在libmemcached软件包中。使用macports安装它:

sudo port install libmemcached

然后,假设您正在使用pip:

pip install pylibmc --install-option="--with-libmemcached=/opt/local"

或者

LIBMEMCACHED=/opt/local pip install pylibmc

pylibmc文档所述。


工作了,但我必须在pip之前添加'sudo'。 - dan

33

我通过检查memcached的安装位置解决了这个问题。

$ which memcached
/usr/local/bin/memcached

在pip安装之前设置LIBMEMCACHED环境变量:

$ export LIBMEMCACHED=/usr/local
$ pip install pylibmc

顺便说一下,我有OS X El Capitan。 - Aidas Bendoraitis
这是针对El Capitan的版本。 - morgs32
1
在我的macOS Sierra上运行良好^^ - Teddy Cross
在我的 macOS Mojave 上运行良好,使用的是 python3.7。 - Vivek
找不到memcached。 - AlxVallejo

18

Ubuntu用户的答案:

sudo apt install libmemcached-dev zlib1g-dev

修好了!在 18.0.4 lts 上验证通过。 - WestCoastProjects

7

我有同样的问题,因为我安装了MEMCACHED而不是LIBMEMCACHED,所以解决方法如下:

brew uninstall memcached #to remove wrong package

brew install libmemcached #install correct lib

pip install pylibmc

它对我有效! : )

Brew拒绝卸载memcached,因为libmemcached是已安装的依赖项;所以我认为你实际上做的是重新安装了memcached - John Mee

6

对于在 Fedora 上找到这个答案的人:

sudo yum install libmemcached-devel


3

在使用brew安装Python3.6后,我在macOS High Sierra上遇到了同样的错误。对于我来说,解决方案是导出此评论中提到的标志:Error when install pylibmc using pip

export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include"

之后,pip install 就可以正常运行。

2

我通过从端口安装memcached来解决了这个问题。

您应该首先从http://www.macports.org/安装macports。

然后运行此命令。

sudo port install memcached

接下来从pypi下载pylibmc http://pypi.python.org/pypi/pylibmc,解压.tar.gz文件。

python setup.py install --with-libmemcached=/opt/local

2

这段代码对我有用

  sudo apt-get install libmemcached-dev zlib1g-dev

  LIBMEMCACHED=/opt/local pip install pylibmc

0
有时需要安装X-Code命令行工具。
 xcode-select -p

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