アカウント名:
パスワード:
私もおおよそPython 3.x系へ移行済みなんですが、それでも自分の書いたスクリプトを3.xのインストールされていない環境で実行したいときもあり、3.x用→2.x用へスクリプトを書き直す羽目になってしまいます(^^;)そうしたときは、インタプリタやライブラリ側に大きく手を加えることなく、1つのスクリプトが両方で動くように対処できないものかな、と感じることも。
あまり良いやり方ではないのは承知の上ですが、C言語の#ifdefみたいに条件付きの中間言語コンパイルってのは駄目ですかね?例えば、
#if __PYTHON_VERSION__ < 3 import SimpleHTTPServerdef HTTPServer():
Pythonでも、次のような書き方ならできる。
import sysif sys.version_info < (3, 0): import SimpleHTTPServer def HTTPServer(): SimpleHTTPServer.test() else: import http.server def HTTPServer(): http.server.test(http.server.SimpleHTTPRequestHandler) HTTPServer()
try: import SimpleHTTPServer def HTTPServer(): SimpleHTTPServer.test()except ImportError: import http.server def HTTPServer(): http.server.test(http.server.SimpleHTTPRequestHandler)HTTPServer()
ならバージョンと関係なくモジュールの有無で動く
いやま、そりゃそうなんですが、ここまでくると、別々に書くのと何が違うのかっつーと....
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
1つのスクリプトが両方で動くように…… (スコア:2)
私もおおよそPython 3.x系へ移行済みなんですが、それでも自分の書いたスクリプトを3.xのインストールされていない環境で実行したいときもあり、3.x用→2.x用へスクリプトを書き直す羽目になってしまいます(^^;)
そうしたときは、インタプリタやライブラリ側に大きく手を加えることなく、1つのスクリプトが両方で動くように対処できないものかな、と感じることも。
あまり良いやり方ではないのは承知の上ですが、C言語の#ifdefみたいに条件付きの中間言語コンパイルってのは駄目ですかね?
例えば、
Re: (スコア:0)
Pythonでも、次のような書き方ならできる。
Re:1つのスクリプトが両方で動くように…… (スコア:0)
try:
import SimpleHTTPServer
def HTTPServer():
SimpleHTTPServer.test()
except ImportError:
import http.server
def HTTPServer():
http.server.test(http.server.SimpleHTTPRequestHandler)
HTTPServer()
ならバージョンと関係なくモジュールの有無で動く
Re: (スコア:0)
いやま、そりゃそうなんですが、ここまでくると、別々に書くのと何が違うのかっつーと....