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

12
我可以访问一组Unix机器,但它们没有我需要的软件(numpy, scipy, matplotlib等),所以我必须自己安装它们(我也没有root权限,因此命令如apt-getyast无法使用)。
在最坏的情况下,我将不得不从源代码编译它们。有更好的方法吗?我听说过Enthought PythonSage,但不确定最佳方法是什么。
有任何建议吗?
7个回答

9
EPD(Enthought Python Distribution)非常好用,但即使是对于学术界,你也只能免费获取32位版本。如果你想进行任何内存密集型操作,EPD并不是一个真正的选择。
编辑:现在情况已经改变,64位版本可以免费供学术/教育使用。
另一方面,Intel MLK库确实有所不同,并且它包含了很多巧妙的东西(例如最新版本的mayavi),否则从源代码构建可能会非常麻烦。此外,正如其他人所说,你只需将其解压缩到家目录中并运行即可。你不需要root访问权限。
如果你永远不需要使用超过2GB的内存,那么EPD绝对是一个很好的选择,但你必须支付费用才能获得64位版本。
如果你正在使用Windows,Python(x,y)非常好用,但如果你使用Linux,则很难找到预编译的二进制文件。它们几乎已不存在... Ubuntu存储库似乎永久关闭了,我也不知道还有哪里可以获取预编译的tarball。这可能会在不久的将来发生改变...希望它会成为你的一个好选择!
老实说,如果你只需要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无法从egg安装,请查看安装说明。

此脚本主要用于演示在您的主目录中构建独立的Python,并假定您正在构建系统已经安装了正确的依赖项,但它至少可以指引您朝着正确的方向前进。

如果使用easy_install无法正确构建numpy或scipy,请下载源代码tarballs并尝试使用不同的参数进行构建。(我个人的经验是,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完美地构建。当然,你的情况可能不同。祝好运!

Joe,也许这是一篇旧帖子,但现在EPD 64位版本已经可以免费用于学术目的。支持Linux、Windows和OSX操作系统。 - gozzilli
你说得完全正确,谢谢!在我最初发布帖子的时候,它并不是直接可用的(或者说,需要通过一些注册步骤使用.edu电子邮件地址才能使用,但当时我并不知道)。他们后来改变了这种情况,使其更加直接可用,我应该很久以前就更新了这个答案。 - Joe Kington
我这个学期在OSX上使用的是EPD 64位。运行得非常好! - David Poole

6
如果您是学术人员,可以免费使用Enthought发行版 (链接)。它带有自己的安装程序并为您处理安装。这比自己从头开始安装matplotlib等要容易得多。在安装机器上没有管理员访问权限的要求,因为该分发版提供了自己的Python二进制文件。我使用过它,发现它简单方便。

3

基于价格因素,我个人会选择Sage。主要问题在于确保您使用Python安装程序来访问库,而不管您使用哪种Python套件。


3

Python(x,y) 是一个免费的 Python 发行版,类似于 EPD (Enthought Python Distribution)。虽然两者都包含基本的标准库,但存在一些差异,所以您应该找出哪个更适合您的需求。EPD 的一个有趣方面是它最近采用了Intel MKL 库,因此可能比 pythonxy 和标准的 numpy 安装程序具有性能优势。

我不知道这些发行版在没有管理员权限的 Unix 系统上如何工作,这是您可能需要尝试的事情。

Sage 则不专注于成为一个发行版(请参见维基百科页面),因此无法进行比较。


3

SageMath是完全免费(GPL兼容)的,该项目的三个主要目标之一是成为自包含的开源数学软件发行版,尽管它体积很大,但易于从源代码(或二进制文件)安装。您应该能够设置Sage或Sage中的任何其他内容(例如Web笔记本),而无需root访问。


1

我每天都使用Sage。我是一个忠实的粉丝,但如果你没有准备好进行大量的更新、调整和配置,我不会推荐它。它还没有准备好面向主流市场。

如果你愿意付出努力来让它运行并保持运行状态,那么Web笔记本界面是非常棒的。但我想象不出你能在没有root权限的情况下让它运行起来。


由于Sage包含一个Web服务器,因此可以在没有root访问权限的情况下使笔记本工作:在Sage提示符处键入“notebook()”。对于更复杂的安装,请键入“notebook?”并阅读文档。 - William Stein
@William,很高兴在Stack Overflow上见到你。我记得我需要调整大量Web服务器配置才能让Sage在系统Web服务器上运行,这样我才能从Windows机器上访问它,而且直到我设法获得该机器的root权限之前,这一点非常困难。尽管那是一年半以前的事了,所以也许情况已经有所改变。答案不再最新了,这是downvote的原因吗? - ptomato

1

您可以使用virtualenv创建虚拟隔离环境,无需任何访问权限,然后调用easy_install自动安装(如果需要编译)所有所需的库到当前目录中,无需管理员权限。

使用virtualenv安装matplotlib

唯一的条件是能够运行虚拟环境,因为您不能安装任何东西。您将不得不将其作为存档文件下载并手动调用virtualenv.py。


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