• 締切済み

pythonのCGIでページを遷移したい

PythonのCGIserverを使っています。 /cgi-bin/hoge.py から /cgi-bin/foo.py へとページを遷移させたいのですが、うまくいきません。 どうすればいいですか? 以下、hoge.pyのソースです。 #!/usr/local/bin/python # coding: utf-8 (中略) print "Location: /cgi-bin/foo.py\n\n" 他の方法として、 import foo として、fooの関数やメソッドを呼ぶことも考えたのですが、 これもうまくいきません。。

  • CGI
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

うまくいかないとは、どう、うまく行かないんですか?

関連するQ&A

  • pythonのプログラムを走らせるには?

    使用するソフトウェアの関係でWeb(HTMLまたはPHP)とPythonの連携が必要になりました。 しかしPythonをWebで扱ったことがなくいまいちどうしたらいいのか分りません。 <form action="/python/pythontest.py" method="GET">  <input type="submit" name="submit" value="更新"> </form> といった形で呼び出しているのですがファイルが開かれるだけでptythonのプログラムが実行されません。 pythonのプログラムは #!/usr/bin/env python # coding: utf-8 import cgi from datetime import datetime html_body = u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> %s </body> </html>""" content='' print "Content-type: text/html;charset=utf-8\n" print (html_body % content).encode('utf-8') と書いています。 何が原因なのでしょうか? /usr/bin/env python のパスがうまく通っていないからでしょうか?

    • ベストアンサー
    • HTML
  • Pythonを用いてCGIを作る勉強をしています。

    Pythonを用いてCGIを作る勉強をしています。 さて、CGIHTTPServerでCGIのテストをしようとしたところ、ぜんぜん動いてくれません。ちゃんとファイルのパーミッションも755にしました。 自分の力だけではどうにもならなかったため、ここで質問させてもらいます。 どうしたらよいのでしょうか。 僕がつくったPythonのソース test.pyは #! /usr/bin python print "Content-type: text/html\n" print "<html><body>Hello!</body></html>" です。 本来ならブラウザで「http://127.0.0.1:8000/cgi-bin/test.py」 とすれば動いてくれるはずなのに以下のようなエラーメッセージが出ます。 localhost - - [19/May/2010 23:46:43] "GET /cgi-bin/test3.py HTTP/1.1" 200 - Traceback (most recent call last): File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/CGIHTTPServer.py", line 255, in run_cgi OSError: [Errno 13] Permission denied localhost - - [19/May/2010 23:46:43] CGI script exit status 0x7f00 PCの環境はMacOSX10.6です。 だれか分かる方。教えていただけないでしょうか?? よろしくお願いします。

    • 締切済み
    • CGI
  • pythonスクリプト実行不可

    pythonスクリプトをCGIとして動作させるとエラーになります。 環境は、 OS : CentOS 6.4 Python : 2.6.6 pythonソースは、 #!/usr/bin/python # coding: utf-8 print "Content-type: text/html; charset=UTF-8" print print ブラウザーから、このCGIを直接起動すると、/var/log/httpd/error_logに下記のエラーが出ます。 [Fri Oct 18 12:45:28 2013] [error] [client 10.1.34.89] (8)Exec format error: exec of '/home/httpd/cgi-bin/test.py' failed Exec format errorとは、何でしょうか? perl CGIは、正常に動作しているのですが。 アドバイスよろしくお願いします。

  • MAMPでpythonを実行させたい

    OSX10.8を使っています http://www.python.jp/Zope/download/pythoncore python-2.7.3-macosx10.6.dmg(32bit/64bit両用) これをインストールしました 以下の記述を test.pyとして保存し #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" MAMPを起動しtest.pyを表示させると #!/usr/bin/env python print "Content-type: text/html\n" print "<html><body>Python is awesome !</body></html>" がそのままブラウザに表示されます application/mamp/conf/apache/httpd.confを開いて #AddHandler cgi-script .cgiのコメントを外し AddHandler cgi-script .cgi .py としapacheを再起動させtest.pyを表示させると インターナルサーバーエラーになりました 何をやり残しているのか、解決方法、または参考になるページを教えて下さい よろしくお願いします

  • centos python

    以前WindowsでPythonのWebプログラムを書いていました。 webサーバーはapacheを利用しています。 そちらをcentOS(apache)に持って行きたいです。 ↓↓↓↓こちらがwindowsでのスクリプトです #! C:/Python27/python # coding: utf-8 temple_body= u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <title>Pythonタイトル</title> </head> <body> <h1>Python テンプレート</h1> テンプレートです</br> </body> </html>""" try: print "Content-type: text/html;charset=utf-8\n" print ( temple_body.format() ).encode('utf-8') except Exception as e: print e ただテンプレートと表示されるだけのものです。 この1行目の #! C:/Python27/python を #! /usr/bin/python2.7 と直したところ サイトは開けず 500 Internal Server Error が、 エラーログには以下のようなものが出ていました。 End of script output before headers: index.py AH01215: (13)Permission denied: exec of '/var/www/html/index.py' failed #! /usr/bin/python2.7の部分が問題だと思うのですが どのように直せばいいのかがわかりません。 windowsの時は.exeを探し、Pathを指定しました。 しかし、centosでpython.exeに相当するものがどこにあるのか分りません。 centosの場合どのようなぱすを指定すれば良いのでしょうか?

  • pythonでのCGI作成

    python で cgiを作成しているのですが、 if f.getfirst('btn1'):  ### 外部スクリプト起動 ###  os.system("python /var/www/cgi-bin/test.py") のように、このボタンが押されたら外部スクリプト起動のようにしたいのですが、どうすればいいでしょうか? たとえば、os.system("mkdir test")のようにすれば、上手くいくのですが、python ~やperl ~のようにすると上手くいきません・・・ (もしかするとapacheの設定か何か必要なのでしょうか?) 初心者丸出しの質問かもしれませんが、よろしくお願いします

    • 締切済み
    • CGI
  • python: fork後の標準出力について

    言語はpythonです。(バージョン : 2.6.6) 以下の二つの単純なpythonスクリプト   test.py, exe_fork.py があります。 [test.py] #!/usr/bin/env python import subprocess proc = subprocess.Popen("./exe_fork.py", stdout=subprocess.PIPE) result = proc.stdout.read() print result [exe_fork.py] #!/usr/bin/env python import os import time pid = os.fork() if pid != 0: print "parent\n" else: time.sleep(5) print "child\n" [動作] 各スクリプトの動作としては、 test.pyがexe_fork.pyをPopen(stdoutはPIPEで受信)で実行し、 read()メソッドでexe_fork.pyの標準出力を受け取り、表示する。 exe_fork.pyはforkして、   親プロセスは"parent"と出力   子プロセスは5秒後に"child"と出力 です。 [実行結果] test.pyを実行すると 5秒後に   parent   child と表示されました。 これを実行する前は実行後すぐに "parent" と表示されてスクリプト終了するのだと予想しておりました。 しかし実際はexe_fork.pyの親と子の両方のプロセス終了するまで何も表示されず 両プロセスが終了した後にtest.pyのread()メソッドが完了するようです。 (どういうしくみでそうなっているのかよくわかりません。。) [質問・相談] test.pyでexe_fork.pyの親プロセスの標準出力だけを反映する方法ございませんでしょうか? なお、都合上、以下の条件を満たしている必要がございます。  条件1: test.py側のソースは変更しない  条件2: exe_fork.pyの親プロセスが終了した時点でtest.pyのread()メソッドが終了する  条件3: forkptyは使わない [参考]  exe_fork.py側で子プロセスのみsys.stdout.close()してみましたが結局exe_fork.pyの子プロセスが終了するまで(=5秒経過するまで)test.pyのread()メソッドは完了しませんでした。   よろしくお願いします。

  • pythonにCでのexternはありますか

    python初心者です。 a.py, b.pyがあります。 <a.py> import b bar=123 b.foo() <b.py> def foo  global bar  print bar 実行すると"123"が表示されず失敗します。 Cだとexternすれば外部参照で希望通りに成功します。 CとPythonは違うことは知っていますが、Pythonで実現できないでしょうか。 又は類似の手段はありますか。

  • Pythonのバージョンアップについて

    CentOS5.5にはPython2.4がデフォルトで入っているのですが、Python2.6でスクリプトを作成する必要がありバージョンアップをしているのですが、dbusモジュールのインポートができず行き詰っております。 具体的には、Python2.4とdbus-pythonがインストールされている状態で、下記のURLを参考にyumでPython2.6をインストールしました。 環境としては「/usr/bin/phthon2.4」と「/usr/bin/phthon2.6」が出来た状態です。 libは「「/usr/lib/phthon2.4」と「/usr/lib/phthon2.6」です。 dbus-pythonのインストール先は「/usr/lib64/python2.4/site-packages/dbus」になります。 Python2.4を環境で下記のインポートは問題ありません。 >>>import dbus しかし、Python2.6環境で同じコマンドを実行すると下記のようなエラーになります。 >>> import dbus Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named dbus dbusの再インストールはリスクが高いと思い、モジュールのパスを通してみたところ下記のようなエラーになりました。 >>> import sys >>> sys.path.append('/usr/lib64/python2.4/site-packages') >>> import dbus Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib64/python2.4/site-packages/dbus/__init__.py", line 1, in <module> from _dbus import * File "/usr/lib64/python2.4/site-packages/dbus/_dbus.py", line 45, in <module> import dbus_bindings ImportError: /usr/lib64/python2.4/site-packages/dbus/dbus_bindings.so: undefined symbol: Py_InitModule4 rpmでモジュールインストール先の変更や、Python自体をソースからインストールなどしてみたのですが、全てうまく行かない状態です。 Pythonバージョンアップ前にインストールされているモジュールの使い方をご存知の方がおられましたら、宜しくお願いします。

  • teraterm上でpythonを使いcsvファイルでいろいろやりたいんですが,...

    すいません。pythonを使いはじめてまだ3日のド素人の意見と思いお付き合いしてください。 pythonで、csvファイルの中にあるカラム10番目の項目にある人数を、1番目のフィールドは項目名なので読みとばして足し合わせいきたいんですが、まだ理解がぜんぜん足りなくて #!/usr/bin/env/python #!coding: utf-8   import sys,string,csv   for line in sys.stdin.readlines(): words = string.split(line, ',')   sum += string.lower(word[10])   print sum と書いて、ファイルを読み込むんですけど、うんともすんとも言わないです。 どなたかアドバイス御願いします。

専門家に質問してみよう