強火で進め

このブログではプログラム関連の記事を中心に書いてます。

別ファイルのインポート

さくらインターネット上、別ファイルのインポートをするときにはまったのでメモ。

原因を調査するためプログラムをできるだけ単純化して以下のようにしてもエラーが発生した。

test.cgi

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

import cgi
import cgitb
import test2

cgitb.enable()

print "Content-Type: text/html\n"

print """
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
%s
</body>
</html>""" % test2.aaa()

やってることは import test2 で test2.cgi をインポートして test2.aaa() (文字列"abc"を返すだけの関数)を実行するだけ内容はこんな感じ。

test2.cgi

def aaa():
	return 'abc'

これでエラーとなります。
いろいろと試行錯誤した結果原因は

インポートするファイルの拡張子は py でないといけない

というものでした。ようするにこういうことです。

呼び出し側 test.cgi(ブラウザから呼ばれるファイルの拡張子は cgi )
呼び出される側 test2.py(importで取り込まれるファイルの拡張子は py )

なかなかのはまり要素でした(さくらさん。cgiとpyどっちも使えるようにしてくださーい(涙))