web-dev-qa-db-ja.com

Python Webホスティング:Numpy、Matplotlib、Scientific Computing

私はNumpy/Scipy/Matplotlibで科学ソフトウェアを書いています。自宅のコンピューターでアプリケーションを開発したので、今は簡単なWebアプリケーションの作成に興味があります。例:ユーザーが画像または音声ファイルをアップロードし、プログラムがNumpy/Scipyを使用してそれを処理し、出力がMatplotlibを使用してブラウザーに表示されるか、ユーザーが処理済みファイルをダウンロードできる可能性があります。

Python 2.4.3がインストールされているが、Numpy/Scipyがインストールされていないホスティングの料金はすでに支払っています。コマンドラインからのシェルアクセスもありません。FTPをドラッグアンドドロップするだけです。かなり制限されていますが、単純なPython/CGIスクリプトを機能させることができます。

驚いたことに、Web検索では、これらの機能がすでに組み込まれているWebホスティングに適したオプションがいくつか見つかりました。(間違っている場合はガイドしてください。)Google App Engineについて学習していますが、まだ完全には理解していません。ツールと制限。ウェブdidが私に言ったことは、他の人も同様の懸念を持っているということです。

解決策を期待して、私はこれらの簡単な質問を素晴らしいSOコミュニティ:

  1. すでにホストされているスペースにnumpy(またはサードパーティのパッケージ/ライブラリ)をインストールする簡単な方法はありますか?ホストされたスペースのPythonパスと、自宅のコンピューターの関連するPython/Numpyディレクトリを知っています。ファイルをコピーして機能させることはできますか?ローカルシステムとリモートシステムの両方を実行できますか? Ubuntu。

  2. Numpy/Matplotlibがインストールされている、またはインストールされていない場合はインストールできる可能性のあるホスティングサイト(無料または有料)はありますか?どんなに単純であっても、動作するアプリケーションで参照できる文書化されたサイトはありますか?

  3. Google App Engineは何らかの形で私を助けてくれますか?それとも完全に何か他のもののためですか?あなたや他の人がPython/Numpyで科学的なアプリケーションを書くためにそれを使用しましたか?もしそうなら、あなたはそれらを参照できますか?

ご協力ありがとうございました。

編集:以下の有用な回答の後、私はSlicehostで$ 20プランを購入しましたが、これまでのところ気に入っています! (私は最初にAmazon EC2を試しました。私は愚かであるに違いありませんが、それを機能させることができませんでした。)Apacheを使用したUbuntuサーバーのセットアップはほんの数時間しかかかりませんでした(そして私はApache初心者です)。 Pythonに加えて、さらに多くの機能を使用して、やりたいことを正確に実行できます。バージョン管理用の独自のリモートリポジトリもあります。ありがとうございます。

編集2:ほぼ2年後、私はLinodeとEC2を(再び)試しました。 Linodeは素晴らしいです。今回はEC2の方が簡単に見えました。おそらく、エクスペリエンスが追加されただけなのか、Amazonが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
43
Steve Tjoa

1:ホストされたスペースへのサードパーティパッケージのインストール

実際、ホストされているスペースにサードパーティのパッケージをインストールできます。純粋なpythonパッケージの場合、必要なのは、それをディレクトリに解凍してから、そのディレクトリをPYTHONPATH環境変数またはsys.pathに追加することだけです。

これは頻繁に行うのが面倒であり、コンパイルされたモジュールでは簡単に機能しません。 pythonホストへのシェルアクセスがある場合、優れた virtualenv パッケージを使用すると、プライベートpython環境をセットアップできます。独自のライブラリ。

Virtualenvを設定するには、シェルで次のようにします。

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

個人のpython環境にインストールしたいものは何でも、easy_installを実行し続けることができます。

これで、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はSSHアクセスを提供し、シェルアクセスを使用すると、上記の方法を使用してnumpyをインストールできます。 Linode / Slicehost などの仮想プライベートサーバーでは、必要なものをインストールすることもできます。

3:AppEngine

上記のように、AppEngineではC拡張機能をインストールできません(ただし、純粋なpythonものは機能します))。そのため、一部の機能でCが使用されていると思われるため、numpyが機能する可能性はほとんどありません。スピードアップ。

17
Crast

残念ながら、App Engineはnumpy、scipy、matplotlibのいずれもサポートしていません。

ホストが使用しているOSとCPUが正確にわかっている場合は、自分で同じインストールを行い、同じバージョンのPythonを使用している、パッケージのソースをダウンロードする)をダウンロードしてインストールできます。それらを.so(またはプラットフォームによっては.pyd)ファイルに要求してビルドし、それらをアップロードします-本当のツアーデフォースのように聞こえます。

多くのいずれか、many通常の仮想ホスティングを提供するサイト(仮想マシン、通常はLinux、適度なHWリソースを備えていますが、root権限、sshシェルアクセス、およびgcc特に使用できる)ははるかに操作が簡単になります-基本的に、必要なソフトウェアをダウンロードしてインストールするのは、自分のLinuxワークステーションで行うのとほぼ同じです!

12
Alex Martelli

2 Numpy/Matplotlibがインストールされているホスティングサイト(無料または有料)が存在するもの

PythonAnywhere Webホスティングとシンプルなブラウザ内IDEを提供します。たくさんのPythonパッケージ(NumPyとMatplotlibを含む)は プリインストール です。無料のプランがあり、「プレミアム」と「ホスティング」を試してみることができます。 「より多くの機能を備えたアカウントは、それぞれ月額5ドルと10ドルです。

完全開示:私はそこで働いています...

7
Giles Thomas

コメントする特権はまだありませんが、「答え」を提供することはできます。

3:AppEngine

NumpyがGoogleApp Engineで利用できるようになりました: https://code.google.com/p/googleappengine/issues/detail?id=19

ただし、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

6
klimaat