在Ubuntu 14.10或Fedora 21上使用Python 2.7,如何使Python Numba正常工作?

26
最近,我在Ubuntu或Fedora Linux上运行Python Numba时遇到了很多困难。主要问题出在llvmlite的编译上。为了使它们正确编译,我需要安装什么?

非常感谢您的这篇文章。几天前我在askubuntu上提出了一个关于这个问题的问题,但是没有得到答案。我将在10小时后尝试您的解决方案,并告诉您它是否适用于我的Ubuntu。 - user4584333
我希望能邀请您共进晚餐。您真的救了我一命。非常感谢您提供这个在任何地方都不存在的解决方案。 - user4584333
10个回答

24

我最终成功运行的版本是numba-0.17.0(也可以是0.18.2)和llvmlite-0.2.2(也可以是0.4.0)。以下是在Ubuntu和Fedora上的相关依赖项和配置选项。

对于Ubuntu 14.04(Trusty)

sudo apt-get install zlib1g zlib1g-dev libedit libedit-dev llvm-3.8 llvm-3.8-dev llvm-dev
sudo pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip install llvmlite --user
LLVM_CONFIG=/usr/bin/llvm-config-3.8 pip install numba --user

针对Ubuntu 14.10版本

sudo apt-get install zlib1g zlib1g-dev libedit libedit-dev llvm-3.5 llvm-3.5-dev llvm-dev
pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config-3.5 pip install llvmlite
LLVM_CONFIG=/usr/bin/llvm-config-3.5 pip install numba

对于 Ubuntu 15.04

sudo apt-get install zlib1g zlib1g-dev libedit2 libedit-dev llvm-3.6 llvm-3.6-dev llvm-dev
pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config-3.6 pip install llvmlite
LLVM_CONFIG=/usr/bin/llvm-config-3.6 pip install numba

针对Fedora 21版本

yum install zlib zlib-devel libstdc++-devel libstdc++ libstdc++-static llvm-3.5.0 llvm-devel-3.5.0 libedit libedit-devel
pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config pip install llvmlite
LLVM_CONFIG=/usr/bin/llvm-config pip install numba

注意:这是最初由问题的发布者发布的,已移至此处以使其适用于SO。


1
一些Ubuntu 14.04的库名称略有不同。以下是更新命令以包括它们:sudo apt-get install zlib1g zlib1g-dev libedit2 libedit-dev llvm-3.5 llvm-3.5-dev llvm-dev sudo pip install enum34 funcsigs sudo LLVM_CONFIG=/usr/bin/llvm-config-3.5 pip install llvmlite sudo LLVM_CONFIG=/usr/bin/llvm-config-3.5 pip install numba - Sevak Avakians
1
有人知道如何在Ubuntu 15.04上使它工作吗?我尝试了上面针对14.10的指示,但在执行'pip install llvmlite'时仍然失败。 - x112341
这对于Ubuntu 12.04也不起作用。在llvmlite的编译中卡住了:( - Geekster
1
对于Ubuntu 15.04,我从llvm 3.5切换到了llvm 3.6,似乎一切正常。因此,例如运行“LLVM_CONFIG=/usr/bin/llvm-config-3.6 pip install llvmlite”代替。 - Paul

4

针对Ubuntu 15.10

首先检查pip是否是正确版本:

pip install --upgrade pip
pip install --upgrade wheel

要求pip版本不低于8.1

$ pip --version
pip 8.1.1 from
$ wheel version
wheel 0.29.0

安装LLVM:

使用apt-get命令进行安装。
sudo apt-get install zlib1g zlib1g-dev libedit2 libedit-dev
sudo apt-get install llvm-3.7 llvm-3.7-dev llvm-dev

然后使用pip安装(警告:llvmlite仅与llvm 3.7兼容):

pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config-3.7 pip install llvmlite
LLVM_CONFIG=/usr/bin/llvm-config-3.7 pip install numba

这也适用于16.04。在我的情况下,我使用了Python 2.7和LLVM 3.8(与llvmlite 0.13兼容)。 - noe

3

Ubuntu 15.10使用Python 3.4.3+

llvmlite版本必须是0.9或更高(我安装了0.10)

llvmlite的GitHub页面所述:

从0.9版本开始,llvmlite需要LLVM 3.7。它不支持早期或后期的LLVM版本。

我的解决方案与其他答案中的相似(但涉及到python3):

为满足依赖关系(例如libedit和压缩库):

sudo apt-get install zlib1g zlib1g-dev libedit2 libedit-dev
sudo pip3 install enum34 funcsigs

llvm-3.7(其他回答中包含的llvm软件包现在安装的是版本3.6,无法正常工作)

sudo apt-get install llvm-3.7 llvm-3.7-dev llvm-3.7-runtime llvm-3.7-tools

尝试从 pip 安装 llvmlite

sudo pip3 install llvmlite

(如果它起作用了,跳过这一步) 如果像我这样不起作用,可以从他们的代码库构建最新的主分支:

git clone https://github.com/numba/llvmlite
cd llvmlite/
sudo ch -c "LLVM_CONFIG=/usr/bin/config-3.7 python3 setup.py build
sudo sh -c "LLVM_CONFIG=/usr/bin/llvm-config-3.7 python3 setup.py install"

最后,安装numba:

sudo pip3 install numba

我不确定,但问题明确说明要使用Python 2.7。此外,您有一个巨大的格式问题(加粗等)。 - cramopy
@cramopy,我提供了Python3的解决方案,因为我遇到了同样的问题,而且没有其他关于它的stackoverflow问题。对于Python 2.7的情况,使用的是pippython,而不是pip3python3。抱歉格式不好。我认为它可以为未来用户的故障排除提供一些视觉帮助。同时,我找到了这个指南来改善我的体验(http://meta.stackexchange.com/questions/18614/style-guide-for-questions-and-answers)。(第一次回答问题) - risantos
ch 在例子中应该改为 sh - Kusalananda
1
笔误:可能应该是 sudo sh -c "LLVM..." 而不是 sudo ch -c "LLVM..." - michael

2

llvmlite 发生了变化。自 llvmlite-0.6.0 版本起,需要安装 llvm-3.6。正确的安装方式如下:

sudo apt-get install zlib1g zlib1g-dev libedit2 libedit-dev llvm-3.6 llvm-3.6-dev llvm-dev
pip install enum34 funcsigs
LLVM_CONFIG=/usr/bin/llvm-config-3.6 pip install llvmlite
LLVM_CONFIG=/usr/bin/llvm-config-3.6 pip install numba

1

起初我没有在这里的评论中得到解决,后来我发现:1.需要使用llvm 3.6而不是3.5,2.对我来说,LLVM_CONFIG环境变量无法正常工作。因此我像这样安装了numba:

sudo apt-get install zlib1g zlib1g-dev libedit-dev llvm-3.6 llvm-3.6-dev llvm-3.6-runtime llvm-3.6-tools
sudo pip install enum34 funcsigs
sudo mv /usr/bin/llvm-config /usr/bin/llvm-config_bak
sudo ln -s /usr/bin/llvm-config-3.6 /usr/bin/llvm-config
sudo pip install llvmlite
sudo pip install numba
sudo mv /usr/bin/llvm-config_bak /usr/bin/llvm-config

(在Ubuntu 14.04上尝试过。)


不幸的是,这对我不起作用。每次我尝试通过pip安装llvmlite时,它都会失败并显示error: option --single-version-externally-managed not recognized。有什么想法吗?我已经尝试了4个小时来安装numba,但一直没有成功。 - maurizio

1

适用于 Fedora 23

首先检查您是否拥有最新的pip版本:

pip install -U pip
pip install -U wheel

然后安装以下软件包:
dnf install zlib zlib-devel libstdc++-devel libstdc++ libstdc++-static llvm-3.7.0 llvm-devel-3.7.0 libedit libedit-devel
pip install enum34 funcsigs

然后从GIT存储库下载并解压llvmlite。假设您正在下载到/usr/local/llvmlite,那么:

git clone <address-for-llvmlite.git> /usr/local/llvmlite
cd /usr/local/llvmlite

按照此处所述构建源代码:

LLVM_CONFIG=/usr/bin/llvm-config python setupy.py build

刷新终端会话并安装构建好的llvmlite

reset
LLVM_CONFIG=/usr/bin/llvm-config python setup.py install

最后通过以下方式下载并安装numba
pip install numba    

0

针对Ubuntu 16.04:

LLVM_CONFIG=/usr/bin/llvm-config-3.7 pip install llvmlite

这个不起作用。它明确地抱怨需要3.9版本。 - lhk

0

对于Ubuntu 14.04,我使用以下方法进行了安装:

export LDFLAGS="-std=gnu++11 -fPIC"

LLVM_CONFIG=/usr/bin/llvm-config-7 pip install llvmlite

LLVM_CONFIG=/usr/bin/llvm-config-7 pip install numba

0

对于 Ubuntu 16.04

sudo pip3 install llvmlite

明确要求使用llvm版本3.9。

但在官方软件包中,目前只有llvm版本3.8。 解决方法是像this这样安装它

然后你可以运行LLVM_CONFIG=/usr/bin/llvm-config-3.9 sudo pip3 install llvmlite


0

如果最近有其他人遇到了这个问题,根据他们的github页面...

"llvmlite适用于Python 2.7和Python 3.4或更高版本。从版本0.17.0开始,llvmlite需要LLVM 4.0。它不支持早期或更高版本的LLVM。

他们有一个兼容性表格,列出了哪些软件包与哪些软件包兼容。所有最新的软件包都可以从他们的网页获取。


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