编译和安装cantera python模块的麻烦

Posted

技术标签:

【中文标题】编译和安装cantera python模块的麻烦【英文标题】:trouble compiling and installing cantera python module 【发布时间】:2011-11-17 22:37:05 【问题描述】:

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

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

根据预配置文件,

# 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 来修复早期的错误,所以不是这样。

【问题讨论】:

为 Ubuntu 安装相关软件包可能比尝试使用 EPD 更容易。或者您可以尝试询问 EPD 用户列表以检查您是否找到了正确的路径。 如果我同时安装了 EPD 和 Ubuntu 发行版 numpy,ipython 将使用 EPD 版本还是 python 发行版?我认为我可以在 ~/.bashrc 中指定它是否正确? 原来我已经有了相关的 Ubuntu 包,所以它一定是别的东西。 看来我可能需要这个:sourceforge.net/projects/numpy/files/Old%20Numarray/1.5.2 【参考方案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 时使用 未安装在默认目录中)应保持不变。希望 这有帮助。

【讨论】:

【参考方案2】:

我找到了解决办法。通过关注我之前关注的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 *

【讨论】:

【参考方案3】:

我们从来没有通过在 pre_config 中设置包含变量来让它工作。相反,我们这样做:

...
USE_NUMPY=$USE_NUMPY:="y"

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

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

【讨论】:

出于某种原因,我之前没有这样做就让它工作了。在我当前的 Ubuntu 安装中,安装程序在没有调整的情况下无法工作。然后我尝试了 if..then 语句,它仍然不起作用。然后,我明确说明了路径,而不是使用 python 命令,现在我已经设置好了。非常感谢!

以上是关于编译和安装cantera python模块的麻烦的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 上安装 Cantera 的问题

如何反转 CANTERA Python 模块中的程序 adiabetic.py 使其输入绝热温度并给出输出入口温度?

python 2.7 中的 Cantera 问题

在 OSx 10.9 Mavericks 上安装 Cantera 2.1

Windows系统下安装Python的SSH模块教程

解决Python默认的模块搜索路径问题