カスタムビルドの argv リストを使用して、別の python スクリプトの main() 関数を呼び出す mod_python パブリッシャー関数を使用します。シェル コマンド ラインからパブリッシャー スクリプトを実行すると、機能します。しかし、mod_python を使用して apache2 で試してみると、main が引数をとらないというエラー (以下に示す) が表示されます。
File "/var/www/wabaServ/waba.py", line 15, in index
aba.main([ "aba.py","-i", "-b"])
TypeError: main() takes no arguments (1 given)
aba.py の main() は次のように定義されます。
def main(argv=None):
--code--
注: list 引数が渡されない場合、aba.main() は mod_python から実行されます。
mod_python パブリッシャー関数は次のようになります。
import sys
sys.path.append("/u/scripts")
import aba
from cStringIO import StringIO
def index():
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
aba.main([ "aba.py","-i", "-b"])
sys.stdout = old_stdout
return(mystdout.getvalue())