在linux中手动构建安装python包,以便识别它们

时间:2016-09-29 00:44:18

标签: python

我的系统是SLES 11.4,有python 2.6.9。 我对python知之甚少,并且没有找到下载rpm的地方,它给了我所需的python包 我获得了numpy 1.4和1.11,我相信在numpy上成功python setup.py build后跟python setup.py install。 从内存开始,我认为这是在/usr/local/lib64/python2.6/...

下安装的

接下来我尝试了建设&安装matplotlib(需要numpy),当我做python setup.py build时,它礼貌地响应,找不到numpy。所以我的问题是

我是否需要设置某种与python相关的环境变量,这与LD_LIBRARY_PATH或PATH一致?

随着我越来越多地使用python安装包,我必须从源代码构建,我需要了解python的默认安装目前的位置,新的东西应该去哪里,以及python的核心设置是哪里知道如何以及在何处识别新包装。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Linux,请确保正确设置了$PYTHONPATH环境变量。

要执行此操作,请在终端中键入以下内容:

echo $PYTHONPATH

如果找不到,可以通过以下操作手动设置变量,并在~/.bashrc文件中找到要查找的模块的位置(使用您选择的编辑器,我选择gedit作为一个例子):

sudo gedit ~/.bashrc

当你完成后别忘了

source ~/.bashrc

答案 1 :(得分:0)

我想我明白了。显然,SLES 11.4不包含默认安装中的开发头文件,这些头文件来自他们的SDK for numpy 1.8。 当然,他们不提供matplotlib以及一堆常见的python包。

根据SLES SDK的python包是系统默认位于/usr/lib64/python2.6/site-packages/下面,它在这里我看到numpy版本1.8。因此,如果您选择各种python包,则使用YAST软件管理器,这就是它们所在的位置。

到目前为止,没有设置 PYTHONPATH 环境变量,我可以启动python,输入import numpy,并且大部分都使用它。但是,如果我尝试构建matplotlib 0.99.1,它会响应它无法找到numpy版本1.8的头文件,因此它知道安装了numpy 1.8但是需要安装开发包。

假设开发标题是指.h文件, 如果我在/usr/lib64/python2.6/site-packages下搜索我没有任何.h文件!

我刚刚下载了numpy-1.8.0.tar.gz的源代码,并轻松地执行了python setup.py.build后跟python setup.py install,并发现它已安装在/usr/local/lib64/python2.6/site-packages/

如果没有设置 PYTHONPATH 环境变量,如果我尝试构建matplotlib,我仍然会收到有关未找到头文件的错误。

但是在我的bash shell中,以root身份执行export PYTHONPATH=/usr/local/lib64/python2.6/site-packages后,我可以成功构建并安装matplotlib 0.99.1,它也会安装/usr/local/lib64/python2.6/site-packages

注意:

我还做了一个成功的构建&安装numpy-1.11并在/usr/local/lib64/python2.6/site-packages下抛出然而当我尝试使用PYTHONPATH设置构建matplotlib 0.99.1时,它直接报告未安装numpy需要1.1版或更高版本。所以这里似乎这个旧版本的matplotlib需要使用某个版本范围的numpy,即最新的numpy 1.11不兼容。

系统设置的唯一其他环境变量是 PYTHONSTARTUP ,它指向文件/etc/pythonstart