麻烦编译和安装cantera python模块

时间:2011-11-17 22:37:06

标签: python linux ubuntu failed-installation

我正在尝试将Cantera安装为Ubuntu linux中的python模块。作为参考,我使用了这些说明:Installing Cantera。运行./preconfigmake后,出现以下错误:

fatal error: numarray/arrayobject.h: No such file or directory

根据preconfig文件,

# If numpy was installed using the --home option, set this to the
# home directory for numpy. This will be needed for all numpy installations
# that don't put the include files into python's native include directory.
#NUMPY_HOME=${NUMPY_HOME:="$HOME/python_packages"}

我正在使用Enthought Python Distribution的学生版本,所以我想也许我需要将最后一行更改为:

NUMPY_HOME=${NUMPY_HOME:="/usr/local/EPD/lib/python2.7/site-packages/"}

但这不起作用。我仍然得到同样的错误。思考?我已经安装了python-dev来修复早期的bug,所以不是这样。

3 个答案:

答案 0 :(得分:1)

您的Ubuntu框上可能有多个Python版本。在 要使用EPD安装Cantera,您应该明确告诉它 使用哪种分发:

PYTHON_CMD=${PYTHON_CMD:="/usr/local/EPD/bin/python"}

每个发行版都有自己的site-packages目录,所以 指定PYTHON_CMD您还可以指定要使用的site-packages。 安装Numpy时,它还会安装Numarray的接口 site-packages/numpy/core/include/numpy,所以没有必要 下载Numarray。此外,numpy已安装到site-packages EPD的目录,NUMPY_HOME(仅在numpy时使用 未安装在默认目录中)应保持原样。希望 这有帮助。

答案 1 :(得分:1)

我找到了解决办法。通过跟随我之前关注的these instructions,我得到了它的工作。不同的是,最后一次,我下载了tar.gz文件,而这次,我使用了subversion存储库,我猜这可能会更新。无论如何,它工作,我也不需要更改默认的python命令。

编辑:我确实需要将其从默认值更改为:

PYTHON_CMD=${PYTHON_CMD:="/usr/local/EPD/bin/python"}

我想发布说明是个好主意,以便其他用户可以使用这些说明:

  

第一步是安装任何依赖项。这由apt-get处理:       sudo apt-get install subversion g ++ gfortran python2.6-dev python-numpy libsundials * graphviz      
下一步是获取cantera的源代码。这可以通过从cantera站点下载cantera-1.8.0-beta-tar.gz来完成,我们从svn检查最新版本       svn checkout http://cantera.googlecode.com/svn/cantera18/trunk/ cantera       
更改为cantera目录(svn checkout或untarred / gunzipped cantera-1.8.0)       
编辑名为preconfig的文件,并确保通过注释/编辑包含以下行       
PYTHON_PACKAGE = $ {PYTHON_PACKAGE:=“full”}       
USE_NUMPY = $ {USE_NUMPY:=“y”}       
SUNDIALS_VERSION = $ {SUNDIALS_VERSION:='2.3'}

Then in a terminal run the following commands:
./preconfig
make
sudo make install
source ~/setup_cantera
If every thing went well you should be able to import the Cantera module in python:
python
>>>from Cantera import *

答案 2 :(得分:1)

我们从未通过在pre_config中设置include变量来实现它。相反,我们这样做:

...
USE_NUMPY=${USE_NUMPY:="y"}

if [ "$USE_NUMPY" = "y" ]; then
    export NUMPY_INC_DIR=`python -c 'import numpy; print numpy.get_include()'`
fi

自从我们开始包含此问题以来,没有任何问题。