11

私はPHPの経験が少ないアマチュア開発者です。

私は最近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>"""
4

5 に答える 5

10

最初に、PythonがPHPほどWeb開発が容易ではない理由について質問します。Pythonはそのために設計されていません。PHPは、apache用のmod_phpを含め、HTMLページを作成するための優れた言語にするために多くの作業を行ってきました。Pythonは、非常に有能なWeb言語ですが、PHPよりもはるかに多くの機能を備えています。たとえば、Dropboxのソフトウェアの大部分、デスクトップクライアントとサーバー側のコードはどちらもPythonです。私は日常業務でPythonを使用しており、Cythonを介してレガシーCコードを新しいPythonコードに統合するために使用しています。

次に進みます。Web開発エクスペリエンスをはるかに簡単にすることができるPythonフレームワークがいくつかあります。専門家や愛好家によって広く使用されている注目すべき2つは、DjangoとPyramid(以前のPylons)です。新しいユーザーとして、Djangoから始めることをお勧めします。これは、始めるのに最適な方法であり、経験が増えるにつれて、大規模で複雑なサイト(およびそれ以上)に使用できます。

DjangoとPyramidには「開発サーバー」が含まれていることがわかります。これらはPythonで記述されたウェブサーバーであり、より迅速な開発を可能にするフレームワークとともにパッケージ化されています。これらの開発サーバーを使用すると、非常に迅速に起動して実行できます。

実際、信じられないほど高速で堅牢で、本番環境に対応している純粋なPythonWebサーバーもあります。非常に優れたPythonサーバーであるGunicornにPyramidアプリケーションをデプロイするには、Pyramid構成に数行余分に追加するだけです。通常、ApacheまたはNginxを介してこれらの純粋なPythonサーバーにリバースプロキシします。

Apacheサーバールートを使用する場合は、mod_wsgiが必要です。mod_pythonを使用して、またはCGIとしてPythonサイトにサービスを提供することは、やや時代遅れの方法です。WSGIは、PythonがWebリクエストを処理するための標準を定義しているため、mod_wsgiを使用すると、apacheは期待される形式でPythonアプリケーションにリクエストを渡すことができます。

Pythonをホスティングプロバイダーにデプロイする場合は、PHPホスティングの場合よりも少し詳しく調べる必要がありますが、公式のPythonwikiに適切なリストがあります。下部にある4つのリンクは、要件を満たすためにさまざまなリストを提供しました。

于 2012-04-16T04:44:57.543 に答える
6

[もし]PythonがWeb開発に広く使われているのに、なぜPHPのように単純にできないのでしょうか。つまり、index.pyを書きたいです。

あなたの例のように、 PythonはPHPと同じくらい単純にすることができます。上記を機能させる最も簡単な方法は、CGIを使用することです(そして、index.cgiではなくファイルを呼び出すとindex.py、スクリプトは問題なく機能します。ただし、最初にコンテンツタイプを指定する必要がありますが、次のようになります。

print 'Content-type: text/html'

これは、Pythonと同様にPHPにも当てはまります。 PythonのCGIモジュールを使用すると、非常にすばやく起動して実行できます。

私が読んだ限りでは、CGI、mod_wsgiなどを使用してデプロイする必要があります

通常はどちらかを選択しますが、現実的には、最新のWSGIに基づいており、低レベルのものについて心配する必要のないフレームワークを選択する可能性があります。ただし、必要がない場合は、これらの低レベルのインターフェイスを気にする必要はありません。

サーバーを再起動して変更を確認します

おそらくそうではありません。サーバーを再起動する必要があることは、フレームワークとデプロ​​イメント構成の制限であり、通常は必要ありません。これを使用するmod_python場合は適用される可能性がありますが、通常は適用されません(たとえば、多くのフレームワークは自動リロードをサポートしています)。

Pythonには、Web開発のための豊富なリソースがあります。必要最低限​​のシステム(CGI、mod_wsgiなど)、軽量システム(CherryPyなど)、フレームワーク全体(Zopeなど)があります。ニーズに最適なものをお選びいただけます。

単純なファイルを作成して出力を生成できると、何かをすばやく実行できるようになる可能性がありますが、それは実際には、リッチで成熟した機能的なフレームワークの兆候ではありません。確かに、すぐに何かを表示し始めることができますが、それではどうしますか?突然、Webフレームワークが提供するのと同じ種類の機能をすべてインポートまたは作成する必要があります。重要なWebアプリの場合、重要なフレームワークが必要です。

たとえば、Djangoのようなものは、永続性フレームワーク、自動生成された管理インターフェース、魅力的な言語、URLディスパッチシステムなどを提供します。アプリのロジックに集中でき、下位レベルの詳細について心配する必要はありません。Djangoは、優れたドキュメントがあり、チュートリアルを使用すると非常にすばやく実行できるため、開始するのに適した場所です。

于 2012-04-16T05:13:22.140 に答える
1

他の人が言っているように、グーグル「パイソンウェブフレームワーク」。かなりの数があります、それらはすべてかなり異なります。最速(時間)で始めるために、bottle.pyを調べます。

于 2012-04-16T06:50:17.580 に答える
1

PythonはWeb開発に非常に広く使用されていますが、なぜPHPのように単純にできないのでしょうか。

HelloWorldはスケーリングしないためです。PythonはPHPではないからです。ウィキペディアから[1] [2]

  • Pythonは、汎用の高級プログラミング言語です。
  • PHPは、もともとWeb開発用に設計された汎用サーバーサイドスクリプト言語です。

Pythonは素晴らしいです、pythonはDRYフレンドリーです。残念ながら、Web開発に関しては、DRYだけでは不十分です。実際に(効率的に)物事を成し遂げたい場合:車輪の再発明をしないでくださいそれはここにかなりよく要約されています:

私にとって最大の恥のように思われるのは、現在、誰もがこのようなものを何度も何度も再構築し、それが本当にインフラストラクチャであるときに、ある種の秘密のソースの競争上の利点としてそれを合理化していることです。新しくて面白いもの。

したがって、Pythonの方法を使用する場合は、適切なジョブに適切なツールを使用してください。

ええ、それはhello worldよりも複雑ですが、フリーランチのようなものはないことを覚えておいてください。あなたはアマチュア開発者であり、プロのコーダーシステム管理者データベース管理者デザイナーシステムアーキテクトなどではありません。今では無料なので、恥ずかしがらずに巨人の肩に立つことはできません。どうか、最新のWebアプリ以外のものを作成しないでください。

また、PHPは[1] [2]であったため、もはや人気がありません。PHPのフラクタルなデザインPHPハンマーなど。

于 2012-04-28T01:44:43.147 に答える
0

PHPは、Webアプリケーションの開発のみを目的としており、より正確には、パーソナルホームページ(P、H、およびPが登場した場所)を構築するためのものでした。一方、Pythonは汎用プログラミング言語です。それは非常に多くのことを目的としていました(そしてあらゆる種類のタスクのためにあらゆる種類のバッテリーを含める必要がありました)。したがって、PythonがPHPと同じように動作することを期待しないでください。

スタンドアロンのPythonスクリプトを実行するには、かなりの労力が必要になります。Webフレームワークを選択することをお勧めします。そもそもdjango(https://www.djangoproject.com/)を学びたいと思うかもしれません。また、GoogleAppEngineを試してみることもできます。herokuに加えて、dotcloud、nuagehq、およびその他のクラウドホストにより、Python(およびdjango)のデプロイが非常にシンプルで簡単になります。

Pythonを使用したWebアプリの開発を楽しんでいただければ幸いです。:)

于 2012-04-16T04:47:16.567 に答える