Python虚拟主机:Numpy,Matplotlib,科学计算

时间:2010-01-17 05:51:57

标签: python numpy matplotlib scipy

我在Numpy / Scipy / Matplotlib中编写科学软件。在家用计算机上开发应用程序后,我现在对编写简单的Web应用程序感兴趣。示例:用户上传图像或音频文件,我的程序使用Numpy / Scipy处理它,输出使用Matplotlib显示在浏览器上,或者用户可以下载已处理的文件。

我已经支付了安装了Python 2.4.3的托管,但没有Numpy / Scipy。我也没有通过命令行访问shell。只需拖放FTP即可。非常有限,但我可以使用简单的Python / CGI脚本。

令人惊讶的是,网络搜索显示很少有适合网络托管的选项,内置了这些功能。(如果我错了,请指导我。)我正在学习Google App Engine,但我还是没有完整的了解其工具和限制。网络所做的告诉我的是其他人也有类似的担忧。

希望找到解决方案,我想我会向这个令人敬畏的SO社区提出这些简单的问题:

  1. 是否有一种简单的方法可以将numpy(或任何第三方软件包/库)安装到我已托管的空间中?我知道托管空间上的Python路径,我知道家用计算机上的相关Python / Numpy目录。我可以简单地复制文件并让它工作吗?本地和远程系统都运行Ubuntu。

  2. 安装了Numpy / Matplotlib的托管网站(免费或付费)是什么,如果没有安装,是否可以安装?是否有任何文档化的站点可以使用工作应用程序引用,无论多么简单?

  3. Google App Engine能否以任何方式帮助我?还是完全是为了别的什么?你或其他人用它来编写Python / Numpy中的科学应用程序吗?如果是的话,你能参考一下吗?

  4. 感谢您的帮助。

    编辑:在下面的有用答案之后,我在Slicehost购买了20美元的计划,到目前为止我喜欢它! (我首先尝试使用Amazon EC2。我必须是愚蠢的,但我无法让它工作。)使用Apache设置Ubuntu服务器需要花费几个小时(而且我是Apache新手)。它允许我完成我想要的Python以及更多。我现在也拥有自己的版本控制远程存储库。再次感谢!

    编辑2:差不多两年后,我再次尝试了Linode和EC2。 Linode很棒。这次EC2似乎更容易 - 也许它只是增加了经验,或者可能是亚马逊对AWS管理控制台所做的改进。对于那些对Numpy / Scipy / Matplotlib / Audiolab感兴趣的人,每当我启动EC2实例时,这是我的Ubuntu备忘单:

    ec2:~$ sudo aptitude install build-essential python-scipy ipython 
           python-matplotlib python-dev python-setuptools libsndfile-dev 
           libasound2-dev mysql-server python-mysqldb 
    
    Upload scikits.audiolab-0.11.0
    
    ec2:~/scikits.audiolab-0.11.0$ sudo python setup.py install
    
    ec2:~$ sudo rm -rf scikits.audiolab-0.11.0
    
    ec2:~$ nano .ipython/ipy_user_conf.py
    
    ip.ex('import matplotlib; matplotlib.use("Agg"); import scipy, pylab, 
           scipy.signal as sig, scipy.linalg as lin, scipy.sparse as spar, 
           os, sys, MySQLdb, boto; from scikits import audiolab')
    
    import ipy_greedycompleter
    
    import ipy_autoreload
    

4 个答案:

答案 0 :(得分:17)

1:将第三方软件包安装到托管空间

您确实可以将第三方软件包安装到托管空间。如果它是一个纯python包,那么所需要的只是将它解压缩到一个目录,然后将该目录添加到PYTHONPATH环境变量或sys.path

这可能会让人感到厌倦,而且对于编译过的模块来说也不会很容易。如果您具有对python主机的shell访问权限,那么优秀的virtualenv包允许您使用自己的库来设置私有python环境。

要设置你的virtualenv,你可以在shell上做这样的事情:

$ virtualenv $HOME/my_python
$ $HOME/my_python/bin/easy_install numpy

您可以继续运行easy_install,以便在个人python环境中安装任何其他内容。

现在,当您编写python脚本时,如果可能的话,您将需要使用私有python解释器:

#!/home/myuser/my_python/bin/python

import numpy

# script here

如果无法指定python env(例如由mod_wsgi运行),则需要将其添加到导入路径:

import sys
sys.path.insert(0, '/home/myuser/my_python/lib/python2.5/site-packages')

import numpy

2:托管网站numpy

我想不出任何提供numpy预安装的托管网站。但是,Dreamhost / Bluehost for sharedhosts提供SSH访问,并且通过shell访问,您可以使用我上面描述的方法安装numpy。任何虚拟专用服务器(例如Linode / Slicehost)都允许您安装所需的任何内容。

3:AppEngine

如上所述,AppEngine不允许你安装C扩展(但是纯python可以工作)所以numpy不太适合你,因为我怀疑它的一些功能使用C加速。

答案 1 :(得分:12)

App Engine不支持任何numpy,scipy或matplotlib,唉。

如果您确切知道主机使用的操作系统和CPU,您可以自己进行相同的安装,下载并安装他们正在使用的相同版本的Python,下载所需的软件包源并将其构建到{ {1}}(或.so,具体取决于平台)文件,并上传这些文件 - 听起来像真正的游览力量。

提供普通虚拟主机的许多许多站点中的任何一个(虚拟机,通常为Linux,具有适度的硬件资源,但是您拥有root权限,ssh shell访问权限和{{1你可以使用更多更容易使用 - 本质上,你将下载和安装你需要的软件,就像你在自己的Linux工作站上一样!

答案 2 :(得分:7)

  

2安装了Numpy / Matplotlib的托管站点(免费或付费)

PythonAnywhere提供网络托管和简单的浏览器内IDE;许多Python包(包括NumPy和Matplotlib)都是pre-installed。有一个免费的计划,您可以使用,并且具有更多功能的“高级”和“托管”帐户分别为5美元和10美元/月。

完全披露:我在那里工作......

答案 3 :(得分:6)

我还没有发表评论,但我可以提供“答案”。

3:AppEngine

现在可以在Google App Engine上使用Numpy: https://code.google.com/p/googleappengine/issues/detail?id=190

然而,matplotlib仍在等待: http://code.google.com/p/googleappengine/issues/detail?id=482 或许更多人主演这个问题将会实现这一目标。

我会注意到svgfig是一个选项,因为它是纯python: http://code.google.com/p/svgfig/

<强>更新

原来matplotlib现已推出: https://developers.google.com/appengine/docs/python/tools/libraries27#matplotlib