2012-04-16 90 views
11

我是一個在PHP方面有點經驗的業餘開發人員。網絡編程Python

我最近學會了Python,我不得不承認,它作爲一種編程語言和其偉大的庫很棒,但是用它來進行web開發似乎是一個很大的麻煩。至於我讀的,我必須使用CGI,mod_wsgi等來部署(http://docs.python.org/howto/webservers.html),重新啓動服務器以查看更改(http:// stackoverflow.com/questions/581038/python-web-programming)

我的問題是,Python被廣泛用於Web開發,爲什麼不能像PHP一樣簡單?

即我很想寫index.py:

print """ 
<html> 
<head> 
<title>Hello world</title> 
</head> 
<body> 
Hello world 
</body> 
</html>""" 
+1

因爲你還沒有做到這一點。 – 2012-04-16 04:41:06

+4

我沒有讓PHP或者 – Jelly 2012-04-16 04:43:22

+7

@jeremyne​​albrown這不是一個壞問題......我把它看作是一個新的Pythonista,試圖找出他們錯過的圖片的哪一部分。我花了一段時間才找到使Python成爲一門非常好的Web語言的作品。也許這個問題可以更好地表達... – Endophage 2012-04-16 04:46:15

回答

6

[if] Python被廣泛用於Web開發,爲什麼它不能像PHP一樣簡單?即我很想寫index.py ...

的Python 可以像PHP一樣簡單,按您的例子。作出上述工作的最簡單的方法是使用CGI(並調用文件index.cgi而不是index.py,那麼你的腳本將工作得很好,雖然你真的應該先指定的內容類型,就像這樣:

print 'Content-type: text/html' 

這將盡可能多適用於PHP像Python。Python's CGI module將讓你和非常快速運行。

至於我讀什麼,我已經使用CGI,mod_wsgi的等部署

你通常會選擇其中一個,而實際上你很可能會選擇一個基於更現代的WSGI的框架,而不用擔心低級別的東西。但是,如果你不想要,你不需要打擾這些低級接口。

重新啓動服務器才能看到更改

大概不會。必須重新啓動服務器是框架和部署配置的限制,通常不是必需的。如果您使用mod_python這可能適用,但通常不適用(例如,許多框架支持自動重新加載)。

Python擁有豐富的Web開發資源。有簡單的系統(例如CGI,mod_wsgi),輕量級系統(例如CherryPy)和整個框架(例如Zope)。你可以選擇一個最適合你的需求。

能夠創建一個簡單的文件併產生一些輸出可能有助於快速獲得某些內容,但這並不代表一個豐富,成熟,有特色的框架。當然,你可以馬上開始展示東西,但那又如何?突然之間,您將需要導入或編寫Web框架提供的所有相同類型的功能。對於非平凡的網絡應用程序,您需要非平凡的框架。

例如,像Django這樣的東西會爲您提供持久性框架,自動生成的管理界面,誘人的語言,URL調度系統等等。您可以專注於您的應用邏輯,而不用擔心更低層次的細節。 Django是一個開始的好地方,因爲它有很棒的文檔,而且這個教程會讓你很快地學習。

10

首先對爲什麼Python不是Web開發的PHP一樣方便你的問題:它沒有被設計的。 PHP已經做了很多工作來使它成爲編寫HTML頁面的好語言,其中包括Apache的mod_php。 Python雖然是一種功能非常強大的Web語言,但它的功能遠遠超過PHP。例如,Dropbox的大部分軟件,包括桌面客戶端和服務器端代碼都是Python。我在我的日常工作中使用Python,並使用Python通過Cython將遺留的C代碼集成到新的Python代碼中。

繼續前進。有很多Python框架可以讓你的網站開發體驗更加簡單。注意到2,專業和業餘愛好者廣泛使用的是Django和金字塔(以前稱爲Pylons)。作爲一名新用戶,我建議您從Django開始,這是一個開始的好方法,可以隨着您的體驗增長用於大型複雜網站(以及更多)。

你會發現Django和金字塔包括「開發服務器」。這些是用Python編寫的Web服務器,與框架一起打包,以加快開發速度。使用這些開發服務器,您可以快速啓動並運行。

還有純粹的Python web服務器,實際上非常快速,強大且非常適合生產。要在Gunicorn上部署一個Pyramid應用程序,一個非常好的Python服務器,只需要在Pyramid配置中添加幾行額外的行。通常情況下,您可以通過Apache或Nginx將代理轉換爲這些純Python服務器。

如果你想要去Apache服務器路由,你只需要mod_wsgi。使用mod_python或CGI服務Python站點是一種過時的做法。 WSGI爲Python處理web請求定義了一個標準,所以mod_wsgi使apache能夠以預期的格式將請求傳遞給你的Python應用程序。

當談到將Python部署到託管服務提供商時,您必須比PHP託管提供更多的東西,但在官方Python維基上維護一個good list。底部的4個鏈接提供了不同的列表以滿足您的要求。

+0

Endophage的不錯總結。我只想補充一點,Python新手在發現你提到的好東西時,可能會在將站點部署到主機服務器時再次感到失望。我發現我的預算主機提供商很容易適應PHP,但不是Python。 – Smandoli 2012-04-16 04:49:44

+0

@Smandoli然而,這是一個常見的問題,官方的Python wiki維護着一大堆Python友好的主機,我在文章的最後添加了它。 – Endophage 2012-04-16 04:53:57

+0

有些地方可以免費託管python應用程序。我在答覆中提到了一些。 – masnun 2012-04-16 04:58:58

0

PHP僅用於Web應用程序開發,更精確地構建個人主頁(即P,H和P出現的地方)。另一方面,Python是一種通用編程語言。它意味着很多東西(並且必須包括各種各樣的電池以用於各種任務)。所以,請不要指望Python的行爲與PHP相同。

獨立的python腳本將需要相當多的努力來運行。我會建議拾取一個Web框架。您可能想先學習django(https://www.djangoproject.com/)。您可能還想嘗試Google App Engine。除了heroku,dotcloud,nuagehq和其他雲主機使python(和django)的部署變得非常簡單和容易。

希望你喜歡用Python開發web應用程序! :)

+0

順便說一句,-1垃圾郵件發送者似乎再次發生了......我發誓有人正在追蹤我的答案,然後在帖子中投票給每個人...... – Endophage 2012-04-16 05:02:23

+2

PHP代表PHP:超文本預處理器,對不對? – VictorKilo 2012-04-16 05:03:37

+0

@Endophage我很驚訝得到一個downvote。現在解釋:) – masnun 2012-04-16 05:05:52

1

正如其他人所說的,谷歌「python web框架」。有不少,他們都完全不同。爲了讓你開始最快(小時),我會看看bottle.py

1

Python被廣泛用於Web開發,爲什麼它不能像PHP那麼簡單?

因爲Hello World不會縮放。因爲Python不是PHP。維基百科[1][2]

  • Python是一種通用的,高級語言
  • PHP最初被設計用於Web開發一個通用的服務器端腳本語言

Python很棒,python是DRY友好。不幸的是,當談到網絡發展時,DRY是不夠的。如果你真的想把事情做完(高效):don't reinvent the wheel。這是相當不錯總結here

什麼似乎是最大的恥辱讓我看到每個人都在目前遍地重建這東西又和它合理化的某種祕密武器的競爭優勢時,它是真正的基礎設施 - 的東西,真的應該是標準化的,這樣你才能真正開始做新的有趣的事情。

因此,使用正確的工具,合適的工作,如果你去蟒蛇方式:

呀,它比一個Hello World複雜,但請記住there ain't no such thing as a free lunch。你是一個業餘開發者,你不是一個專業的編碼器系統管理員數據庫管理員設計師系統架構師等不要太害羞stand on the shoulders of giants因爲現在,免費。請不要構建不低於a modern web app

此外,PHP不再流行,因爲它是[1][2],參見PHP's fractal bad design,PHP hammer