2010-01-17 48 views
42

Tôi viết phần mềm khoa học trong Numpy/Scipy/Matplotlib. Đã phát triển các ứng dụng trên máy tính gia đình của tôi, bây giờ tôi quan tâm đến việc viết các ứng dụng web đơn giản. Ví dụ: người dùng tải lên hình ảnh hoặc tệp âm thanh, chương trình của tôi xử lý tệp bằng Numpy/Scipy và đầu ra được hiển thị trên trình duyệt bằng Matplotlib hoặc có thể người dùng có thể tải xuống tệp được xử lý.Lưu trữ web Python: Numpy, Matplotlib, Máy tính khoa học

Tôi đã thanh toán cho dịch vụ lưu trữ có cài đặt Python 2.4.3 nhưng không có Numpy/Scipy. Tôi cũng không có quyền truy cập shell thông qua dòng lệnh. Chỉ cần kéo và thả FTP. Khá hạn chế, nhưng tôi có thể nhận được các script Python/CGI đơn giản hoạt động.

Đáng ngạc nhiên, một tìm kiếm trên web đã tiết lộ một số tùy chọn phù hợp để lưu trữ web với những khả năng này đã được tích hợp sẵn. (Vui lòng hướng dẫn tôi nếu tôi sai.) Tôi đang tìm hiểu về Google App Engine, nhưng tôi vẫn chưa có hiểu biết đầy đủ về các công cụ và giới hạn của nó. Trang web đã làm gì cho tôi biết rằng những người khác có mối quan tâm tương tự.

Hy vọng cho các giải pháp, tôi nghĩ tôi sẽ hỏi những câu hỏi đơn giản cho cộng đồng tuyệt vời SO:

  1. Có một cách đơn giản để cài đặt NumPy (hoặc bất kỳ gói của bên thứ ba/thư viện) vào đã tôi không gian lưu trữ? Tôi biết đường dẫn Python trên không gian lưu trữ của tôi và tôi biết các thư mục Python/Numpy có liên quan trên máy tính ở nhà của tôi. Tôi có thể chỉ cần sao chép các tập tin trên và nó có hoạt động không? Cả hai hệ thống cục bộ và từ xa đều chạy Ubuntu.

  2. Trang web lưu trữ nào tồn tại (miễn phí hoặc trả phí) có cài đặt Numpy/Matplotlib hoặc nếu không được cài đặt, khả năng cài đặt? Có bất kỳ trang web được tài liệu nào mà bạn có thể tham chiếu với các ứng dụng đang hoạt động không, dù đơn giản như thế nào?

  3. Google App Engine có thể giúp tôi bằng bất kỳ cách nào không? Hoặc là nó hoàn toàn cho cái gì khác? Bạn hoặc những người khác đã sử dụng nó để viết các ứng dụng khoa học bằng Python/Numpy? Nếu vậy, bạn có thể tham khảo chúng?

Cảm ơn sự giúp đỡ của bạn.

EDIT: Sau các câu trả lời hữu ích bên dưới, tôi đã mua gói 20 đô la tại Slicehost và tôi thích nó cho đến nay! (Lần đầu tiên tôi thử Amazon EC2. Tôi phải ngu ngốc, nhưng tôi không thể làm việc đó được.) Thiết lập máy chủ Ubuntu với Apache chỉ mất vài giờ (và tôi là người mới làm quen với Apache). Nó cho phép tôi làm chính xác những gì tôi muốn với Python cộng thêm nhiều hơn nữa. Bây giờ tôi có kho lưu trữ từ xa của riêng mình để kiểm soát phiên bản. Cảm ơn một lần nữa!

EDIT 2: Gần hai năm sau, tôi đã thử Linode và EC2 (lần nữa). Linode là tuyệt vời. EC2 có vẻ dễ dàng hơn trong thời gian này - có lẽ đó chỉ là thêm kinh nghiệm, hoặc có thể đó là những cải tiến mà Amazon đã thực hiện cho bảng điều khiển quản lý AWS. Đối với những người quan tâm NumPy/scipy/Matplotlib/Audiolab, đây là Ubuntu của tôi cheat sheet bất cứ khi nào tôi khởi động một thể EC2:

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 

Trả lời

16

1: Cài đặt gói bên thứ ba để không gian tổ chức

Bạn thực sự có thể cài đặt các gói bên thứ ba để không gian lưu trữ của bạn. Nếu đó là một gói python tinh khiết, tất cả những gì cần thiết là giải nén nó vào một thư mục và sau đó thêm thư mục đó vào biến môi trường PYTHONPATH của bạn hoặc sys.path.

Điều này có thể gây mệt mỏi thường xuyên và không hoạt động dễ dàng đối với các mô-đun được biên dịch. Nếu bạn có quyền truy cập shell vào máy chủ python của mình, gói virtualenv xuất sắc cho phép bạn thiết lập môi trường python riêng với các thư viện riêng của nó.

Để thiết lập virtualenv của bạn, bạn sẽ làm điều gì đó như thế này tại shell:

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

Bạn có thể tiếp tục chạy easy_install cho bất cứ điều gì khác mà bạn muốn cài đặt trong môi trường trăn cá nhân của bạn.

Bây giờ, khi bạn viết kịch bản python của bạn, bạn sẽ muốn sử dụng thông dịch viên python tin của bạn, nếu có thể:

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

import numpy 

# script here 

Nếu env python của bạn không thể được chỉ định (chẳng hạn như nếu chạy bằng mod_wsgi) , bạn sẽ cần phải thêm nó vào con đường nhập khẩu:

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

import numpy 

2: trang web Hosting với numPy

tôi không thể suy nghĩ của bất kỳ trang web lưu trữ offhand cung cấp cài đặt sẵn gumpy. Tuy nhiên, Dreamhost/Bluehost cho sharedhosts cung cấp quyền truy cập SSH và với truy cập trình bao, bạn có thể cài đặt gọn gàng bằng cách sử dụng các phương pháp tôi đã mô tả ở trên. Bất kỳ Máy chủ riêng ảo nào như Linode/Slicehost cũng sẽ cho phép bạn cài đặt bất kỳ thứ gì bạn muốn.

3: AppEngine

Như đã đề cập ở trên, AppEngine sẽ không cho phép bạn cài đặt phần mở rộng C (nhưng những trăn tinh khiết làm việc) vì vậy nó NumPy chắc sẽ làm việc cho bạn trên đó, kể từ khi tôi nghi ngờ một số tính năng của nó sử dụng C tăng tốc.

+0

Cảm ơn lời khuyên hữu ích. Tôi sẽ thử điều này theo như tài khoản của tôi cho phép. –

+0

Không sử dụng sys.path.insert(), sử dụng site.addsitedir() để thay thế. Cách sau giải thích đúng các tệp .pth trong thư mục site-packages. Ngoài ra còn có các vấn đề sắp xếp lại bạn cần phải giải quyết. Đọc 'http://code.google.com/p/modwsgi/wiki/VirtualEnvironments'. –

+0

numpy và matplotlib không được hỗ trợ trên công cụ ứng dụng w/python 2.7 –

12

App Engine không hỗ trợ bất kỳ NumPy, scipy, hoặc matplotlib, than ôi.

Nếu bạn biết chính xác hệ điều hành và CPU mà máy chủ đang sử dụng, bạn có thể cài đặt giống hệt, tải xuống và cài đặt cùng phiên bản Python mà họ đang sử dụng, tải xuống các gói bạn yêu cầu và xây dựng chúng .so (hoặc .pyd, tùy thuộc vào nền tảng) tệp và tải lên những tệp đó - âm thanh như một lực lượng du lịch thực sự.

Bất kỳ của nhiều người, nhiều trang web cung cấp lưu trữ ảo bình thường (một máy ảo, thường Linux, với đồng lương ít ỏi HW, nhưng đặc quyền root cho bạn, truy cập ssh vỏ, và một gcc bạn có thể sử dụng đặc biệt) sẽ là nhiều hơn dễ dàng hơn để làm việc với - về cơ bản, bạn sẽ tải xuống và cài đặt phần mềm bạn cần giống như cách bạn làm trên máy trạm Linux của chính bạn!

+0

Để lưu trữ ảo. Tôi đã sử dụng Slicehost. Amazon EC2 là một lựa chọn phổ biến khác. – airportyh

+0

Chỉ một phiếu bầu khác để chuyển sang giải pháp máy chủ ảo. Tôi đã bị đốt cháy bằng cách đặt cùng một giải pháp trên một máy chủ chia sẻ, chỉ để bị bắn hạ bởi một sự thay đổi trong chính sách hành chính của dịch vụ lưu trữ. Tôi đã sử dụng tài khoản máy chủ ảo tại www.maxvps.com trong hai năm với thành công lớn trong việc cài đặt bất kỳ pháo hoa Python nào tôi muốn. –

+0

Alex: cảm ơn vì câu trả lời rõ ràng. Vì vậy, với một trong những máy chủ ảo phổ biến, với quyền root và truy cập shell, tôi có thể cài đặt các gói với một loạt các "apt-get install" như tôi làm ở nhà? Điều đó thật tuyệt. Vì lợi ích của tiền, trước tiên tôi sẽ xem liệu tôi có thể sửa đổi không gian hiện tại của mình để làm việc hay không. –

6

Tôi chưa có tư cách để nhận xét nhưng tôi có thể cung cấp "câu trả lời".

3: AppEngine

NumPy bây giờ đã có trên Google App Engine: https://code.google.com/p/googleappengine/issues/detail?id=190

Tuy nhiên, matplotlib vẫn đang chờ: http://code.google.com/p/googleappengine/issues/detail?id=482 Có lẽ nhiều người với sự tham gia vấn đề này sẽ làm cho nó xảy ra.

tôi sẽ lưu ý svgfig đó là một lựa chọn vì nó là trăn tinh khiết: http://code.google.com/p/svgfig/

Cập nhật:

Hóa ra matplotlib bây giờ đã có: https://developers.google.com/appengine/docs/python/tools/libraries27#matplotlib

+0

Cảm ơn bạn đã chỉ ra lần bổ sung gần đây (một tuần trước) này cho GAE! http://googleappengine.blogspot.in/2012/02/announcing-general-availability-of.html –

7

2 gì lưu trữ các trang web tồn tại (miễn phí hoặc trả tiền) có Numpy/Matplotlib được cài đặt

PythonAnywhere cung cấp dịch vụ lưu trữ web và IDE đơn giản trong trình duyệt; nhiều gói Python (bao gồm NumPy và Matplotlib) là pre-installed. Có một kế hoạch miễn phí mà bạn có thể sử dụng để chơi xung quanh, và "Premium" và "Hosting" tài khoản với nhiều tính năng hơn là $ 5 và $ 10/tháng tương ứng.

Tiết lộ đầy đủ: Tôi làm việc ở đó ...

Các vấn đề liên quan