Enthought Python、Sage或其他(在Unix集群中)

12 投票
7 回答
6491 浏览
提问于 2025-04-15 22:14

我有一组Unix机器可以使用,但上面没有我需要的软件,比如numpyscipymatplotlib等等,所以我得自己安装这些软件。而且我没有管理员权限,所以像apt-getyast这样的命令也用不了。

最糟糕的情况是,我可能得从源代码开始编译这些软件。有没有什么更好的办法呢?我听说过Enthought PythonSage,但不太确定哪种方法最好。

有什么建议吗?

7 个回答

3

python(x,y) 是一个免费的 Python 发行版,和 EPD(Enthought Python Distribution)类似。虽然这两个版本都包含了基本的标准库,但它们之间还是有一些区别的,所以你需要找出哪个更适合你的需求。EPD 的一个有趣之处在于,它最近加入了 Intel MKL 库,这可能让它在性能上比 pythonxy 和标准的 numpy 安装包更有优势。

我不太清楚这些发行版在没有管理员权限的 Unix 系统上是怎么工作的,这个你可能需要自己尝试一下。

另一方面,Sage 并不是专注于成为一个发行版(可以查看 维基百科页面),所以你不能真的把它和其他的发行版进行比较。

6

如果你是学术界的人,可以免费使用Enthought这个软件包。你可以通过这个链接下载。它自带安装程序,安装过程会自动帮你搞定。这比你自己从头开始安装matplotlib等要简单得多。安装的时候不需要管理员权限,因为这个软件包自带了Python的运行环境。我用过,觉得它简单方便。

9

EPD(Enthought Python Distribution)非常好,但即使是学术用途,你只能免费获得32位版本。如果你打算做一些需要大量内存的事情,这个选择就不太合适了。

更新:现在情况已经改变,64位版本可以免费用于学术和教育用途。

另一方面,Intel的MLK库确实有帮助,它里面有很多很酷的东西(比如最新版本的mayavi),这些东西如果从源代码构建起来会非常麻烦。而且,正如其他人所说的,你只需将它解压到你的主文件夹就可以运行,不需要管理员权限。

如果你不需要使用超过2GB的内存,EPD绝对是一个很好的选择,但如果想要64位版本就得付费。

如果你在Windows上,Python(x,y)也很不错,但如果你在Linux上,找到预编译的版本就比较困难了。几乎没有了……Ubuntu的仓库似乎一直都无法使用,我也不知道哪里能找到预编译的压缩包。不过,这种情况可能会在不久的将来改变……希望能有好消息,因为这对你来说会是个不错的选择!

老实说,如果你只需要numpy、scipy和matplotlib,这些从源代码构建起来相对简单(尤其是如果你可以不使用scipy的话),你也可以自己构建一个Python解释器,然后用easy_install来避免从源代码构建它们。当然,这需要你的机器上已经安装了基本的构建环境(比如gcc等)……这就是我当时的做法。

如果你选择这个方法,最好下载Python的源代码,自己构建一个Python解释器,然后安装setuptools,再用easy_install安装其他库。(或者,你可以下载numpy等的源代码,直接为你刚刚构建的Python解释器构建和安装它们。)

下面展示了如何在当前工作目录下的一个名为“pythondist”的文件夹中构建基本的东西(Python、numpy、scipy、matplotlib、ipython)。

#! /bin/sh

builddir=$(pwd)/pythondist
mkdir -p $builddir/source
cd $builddir/source

wget 'http://python.org/ftp/python/2.6.5/Python-2.6.5.tgz'
wget 'http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e'
tar -xvzf Python-2.6.5.tgz

# Build python
cd $builddir/source/Python-2.6.5/

# The --prefix argument is the key!
./configure --prefix=$builddir

# Be sure to speed things up with the -j option if you're 
# on a multicore machine (e.g. make -j 4 build for a quadcore)
make build 
make install

# Now install setuptools
cd $builddir/source
tar -xvzf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11/

# The next key is to call this with the python you just built!
$builddir/bin/python setup.py build
$builddir/bin/python setup.py install

# Now just install numpy, scipy, ipython, matplotlib, etc through easy_install
$builddir/bin/easy_install numpy
$builddir/bin/easy_install scipy
$builddir/bin/easy_install matplotlib
$builddir/bin/easy_install ipython

更新:脚本中有一些小错误。如果numpy或scipy没有正确安装,请查看安装说明。

这个脚本主要是为了演示如何在你的主目录中构建一个独立的Python,假设你所用的系统已经安装了必要的依赖,但至少能给你指明方向。

如果使用easy_install时numpy或scipy没有正确构建,可以下载源代码压缩包,尝试用不同的参数进行构建。(根据我的经验,numpy/scipy的setup.py常常会错误地检测到不正确的fortran编译器。)例如:

cd $builddir/source
wget http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1.tar.gz/download
tar -xvzf numpy-1.4.1.tar.gz
cd numpy-1.4.1/
# If you don't specify an action (e.g. "build") this will enter an interactive
# mode to help diagnose problems... See the INSTALL.txt file, too!
$builddir/bin/python setup.py 

在我的OpenSUSE 11.2系统上,构建numpy和scipy时需要指定“--fcompiler=gnu95”,因为我同时安装了g77和gfortran。否则构建会出错。

不过,在一个较旧的RHEL 3系统上,使用easy_install构建时一切正常。具体情况可能会有所不同。祝你好运!

撰写回答