ファイルをディスクにダウンロードせずに、ターミナルで URL (www.blahblah.com/script.py) から Python スクリプトを実行する方法はあるのでしょうか?
ありがとう!
ファイルをディスクにダウンロードせずに、ターミナルで URL (www.blahblah.com/script.py) から Python スクリプトを実行する方法はあるのでしょうか?
ありがとう!
これをクライアントで実行しますか、それともサーバー (結果を返す) で実行しますか?
クライアントで実行したい場合は、何らかの方法でダウンロードする必要があります。簡単な方法は、ダウンロード、実行、削除することです:
$ wget blahblah.com/script.py && (python script.py; rm script.py)
これをサーバー上で実行したい場合は、他の人が述べたように CGI を使用できます。やりたいことによっては、代わりに Web フレームワークを使用することもできます。
軽量フレームワークについては、 Flaskをチェックしてください。彼らのドキュメントは素晴らしく、私は 1 日で何かを立ち上げて実行することができました (私は Python と Web サーバーの両方にかなり慣れていません)。
探しているものは次のとおりです。
wget -qO- https://gist.githubusercontent.com/mattwarrenrnp/6ca5bbeb4959974fb4ac/raw/23196eba76b1f21210f530a05572e38349384e0d/print.py | python -
説明:
静かなモードの-qは、Python として解釈されようとするエラーを非表示にします
O-ダウンロードをstdoutに送信します
その stdout を「-」を使用して python にパイプし、stdin から実行するように指示します。
警告: このように実行するスクリプトが信頼できるものであることを常に確認してください。
あなたが求めているのはCGIと呼ばれるものです。Python にはモジュールがあります:
http://docs.python.org/library/cgi.html
しかし、CGI は一般に Python アプリケーションを提供するための非常に非効率的なアプローチであるため、現在は少し時代遅れです。何らかのPython Web フレームワークを使用することをお勧めします。
CGI をサポートする Web サーバーは、CGI スクリプトへの参照として機能する URL を解釈するように構成できます。一般的な規則は、ディレクトリ ツリーのベースに cgi-bin/ ディレクトリを置き、その中のすべての実行可能ファイルを CGI スクリプトとして扱うことです。もう 1 つの一般的な規則は、ファイル名拡張子を使用することです。たとえば、CGI スクリプトに一貫して拡張子 .cgi が付けられている場合、Web サーバーはそのようなすべてのファイルを CGI スクリプトとして解釈するように構成できます。
HTTP PUT または POST の場合、ユーザーが送信したデータは標準入力を介してプログラムに提供されます。Web サーバーは、渡された環境変数の小さくて効率的なサブセットを作成し、プログラムの実行に関連する詳細を追加します。
これがあなたの質問にどのように当てはまるかは、最初に、Webサーバーがタイプを認識するように構成されている場所または同様の場所のscript.py
中に住む必要があるということです。次に、 Python モジュールを使用してパラメーターにアクセスcgi-bin
する必要があります (また、要求/応答形式にも準拠します)。cgi
Web での Python の使用に関する有用な情報については、Python のドキュメントを参照してください。
最も一般的に「CGI」と呼ばれるこのインターフェイスは最も古く、ほとんどすべての Web サーバーですぐにサポートされます。CGI を使用して Web サーバーと通信するプログラムは、要求ごとにサーバーによって開始される必要があります。そのため、リクエストごとに新しい Python インタープリターが開始されます (開始までに時間がかかります)。そのため、インターフェイス全体が低負荷の状況でのみ使用可能になります。
CGI の利点は、単純なことです。CGI を使用する Python プログラムを作成するには、約 3 行のコードが必要です。この単純さには代償が伴います。開発者にとって役立つことはほとんどありません。
CGI プログラムを作成することは、まだ可能ですが、推奨されなくなりました。このドキュメントで後述するトピックである WSGI を使用すると、CGI をエミュレートするプログラムを作成できるため、より適切なオプションが利用できない場合でも CGI として実行できます。
CGI の目的を果たし、その欠点の一部がない、より新しい代替手段があります。
FastCGI と SCGI は、別の方法で CGI のパフォーマンスの問題を解決しようとします。インタープリターを Web サーバーに埋め込む代わりに、実行時間の長いバックグラウンド プロセスを作成します。Web サーバーには、Web サーバーがバックグラウンド プロセスと「対話」できるようにするモジュールがまだあります。バックグラウンド プロセスはサーバーから独立しているため、Python を含む任意の言語で記述できます。言語には、Web サーバーとの通信を処理するライブラリが必要です。
FastCGI と SCGI の違いは非常に小さいです。SCGI は基本的に「単純な FastCGI」に過ぎないからです。SCGI に対する Web サーバーのサポートは限られているため、ほとんどの人は代わりに同じように機能する FastCGI を使用します。SCGI に適用されるほとんどすべてのことは、FastCGI にも適用されるため、後者についてのみ説明します。