代码之家  ›  专栏  ›  技术社区  ›  Steve Tjoa

python web主机:numpy、matplotlib、科学计算

  •  43
  • Steve Tjoa  · 技术社区  · 14 年前

    我用numpy/scipy/matplotlib编写科学软件。在我的家用电脑上开发了应用程序,现在我对编写简单的Web应用程序很感兴趣。示例:用户上载图像或音频文件,我的程序使用numpy/scipy处理它,并使用matplotlib在浏览器上显示输出,或者用户可以下载处理过的文件。

    我已经为安装了python 2.4.3但没有numpy/scipy的主机支付了费用。我也没有通过命令行访问shell的权限。只需拖放ftp。相当有限,但我可以让简单的python/cgi脚本工作。

    令人惊讶的是,一次网络搜索揭示了一些已经内置了这些功能的适合网络托管的选项。(如果我错了请引导我。)我正在学习谷歌应用引擎,但我仍然不完全理解它的工具和局限性。什么网站 告诉我其他人也有类似的担忧。

    希望能找到解决方案,我想我会向Awesome So社区提出这些简单的问题:

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

    2. 有哪些托管站点(免费或付费)安装了numpy/matplotlib,或者如果没有安装,安装它的可能性?无论多么简单,是否有任何文档化的网站可以供您参考工作应用程序?

    3. 谷歌应用引擎能帮我什么忙吗?或者完全是为了别的什么?您或其他人是否使用它来用python/numpy编写科学应用程序?如果有的话,你能参考一下吗?

    谢谢你的帮助。

    编辑:在下面这些有用的答案之后,我在Slicehost买了20美元的计划,到目前为止我很喜欢它!(我第一次尝试亚马逊EC2。我一定很蠢,但我就是不能让它工作。)用Apache安装Ubuntu服务器只花了几个小时(我是Apache新手)。它让我可以用python plus做我想要的事情。我现在也有自己的远程版本控制库。再次感谢!

    编辑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 回复  |  直到 11 年前
        1
  •  17
  •   Crast    14 年前

    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 /Bluehostforsharedhosts提供ssh访问,通过shell访问,您可以使用上面描述的方法安装numpy。任何虚拟专用服务器,如 Linode / Slicehost 将允许您安装任何您想要的,以及。

    3:AppEngine

    如前所述,AppEngine不允许您安装C扩展(但纯Python扩展可以工作),因此在那里,Numpy不太可能为您工作,因为我怀疑它的一些特性使用C加速。

        2
  •  12
  •   Alex Martelli    14 年前

    应用引擎不支持numpy、scipy或matplotlib,唉。

    如果您确切知道您的主机使用的是什么操作系统和CPU,您可以为自己进行相同的安装,下载并安装他们使用的同一版本的python,下载您需要的包的源代码并将它们构建到 .so (或) .pyd ,这取决于平台)的文件,并上传这些文件——听起来像是真正的强制巡演。

    任何一个, 许多的 提供普通虚拟主机的站点(一个虚拟机,通常是Linux,具有适度的硬件资源,但对您具有根权限、ssh shell访问和 gcc 您可以特别使用)将 许多的 更容易使用——本质上,您将下载和安装所需的软件,就像在自己的Linux工作站上一样!

        3
  •  7
  •   Giles Thomas    12 年前

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

    PythonAnywhere 提供Web托管和一个简单的浏览器内IDE;许多python包(包括numpy和matplotlib)都是 pre-installed . 有一个免费的计划,你可以用来玩,而“高级”和“托管”账户的更多功能分别是5美元和10美元/月。

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

        4
  •  6
  •   Klimaat    11 年前

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

    3:外观

    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