2015/06/20(土) [n年前の日記]
#3 [prog] Atomでスクリプトを実行するにはどうすれば
Windows7 x64 + Atomエディタで Pythonスクリプトを書いてみようと思ったのだけど、その場でPythonスクリプトを実行する方法が分からなくて。
編集中のスクリプトを実行できる拡張というと、以下の3つが見つかったのだけど。
_script
_script-runner
_atom-runner
_シバン (Unix) - Wikipedia
_env - Wikipedia
この場合、/usr/bin/env が python のある場所を探して伝えてくれるので、スクリプトを配布する人も動かす人も楽になる。各環境が Python だの Perl だの Ruby だのをどこにインストールしてるかによって、その都度スクリプトソースを書き換えなきゃいけない、という手間が省けるので。 *1
ただ、Windows は /usr/bin/env なんて無いわけで…。もっとも、Windows 上で動かした場合は、最初に # がついてることで「これは只のコメント行だな」と判断して読み飛ばしてくれるはずで。実際、DOS窓上でスクリプトを実行しても文句を言われたりしないし。
しかし、どうも atom-runner はそこを読み取って「オイコラ、/usr/bin/env なんて無いぞ? バグったスクリプトを俺に渡してるんじゃねえ」と文句を言ってるのかなと。
Atom関連情報を探してみたけど、どうも Macユーザさんがほとんどのようで。コレ、Macなら問題なく動いてるんだろうな…。
まあ、DOS窓開いといてそっちで動かせば済む話でしょうけど。エディタ上からキーを叩けば動作確認できるソレと比べると不便だなと。
編集中のスクリプトを実行できる拡張というと、以下の3つが見つかったのだけど。
_script
_script-runner
_atom-runner
- script は、出力結果が文字化けして何が出力されたのか分からず。
- script-runner は、Uncaught TypeError: Bad argument とエラーが。
- atom-runner は、Pythonスクリプトの1行目に #! /usr/bin/env python と書いてあると Error : spawn /usr/bin/env ENOENT とエラーが。該当行を削除すると動くし、文字化けもしないけど…。この行をわざわざ削るのはなあ…。
_シバン (Unix) - Wikipedia
_env - Wikipedia
この場合、/usr/bin/env が python のある場所を探して伝えてくれるので、スクリプトを配布する人も動かす人も楽になる。各環境が Python だの Perl だの Ruby だのをどこにインストールしてるかによって、その都度スクリプトソースを書き換えなきゃいけない、という手間が省けるので。 *1
ただ、Windows は /usr/bin/env なんて無いわけで…。もっとも、Windows 上で動かした場合は、最初に # がついてることで「これは只のコメント行だな」と判断して読み飛ばしてくれるはずで。実際、DOS窓上でスクリプトを実行しても文句を言われたりしないし。
しかし、どうも atom-runner はそこを読み取って「オイコラ、/usr/bin/env なんて無いぞ? バグったスクリプトを俺に渡してるんじゃねえ」と文句を言ってるのかなと。
Atom関連情報を探してみたけど、どうも Macユーザさんがほとんどのようで。コレ、Macなら問題なく動いてるんだろうな…。
まあ、DOS窓開いといてそっちで動かせば済む話でしょうけど。エディタ上からキーを叩けば動作確認できるソレと比べると不便だなと。
◎ 妥協 :
_script
を使った場合だけど、#!/usr/bin/env python の前に # を打って、# #! /usr/bin/env python にすれば…最低限の修正で誤魔化せなくもないかなと。
以下で気になる話が。
_Python can't be executed because "#! /usr/bin/env python" ? - Issue #288 - rgbkrk/atom-script
_atom-script/script-view.coffee at 833e7a3a680a53941f972b5ae3c64bcd520eccb9 ・ rgbkrk/atom-script
む。なんとかなったかも。C:\Users\アカウント名\.atom\packages\script\lib\script-view.coffee をいきなり書き換えちゃって、getShebang の中で何もせずに return するよう修正してみたら出力結果が文字化けしなくなった。これなら使えそう。
ところで、拡張子が .coffee ってついてるけど…コレ何? CoffeeScript ってヤツかな。どんな言語なんだろう。
ググってみたら、JavaScript を Ruby っぽく書けるものらしく。なんだかヨサゲ。
以下で気になる話が。
_Python can't be executed because "#! /usr/bin/env python" ? - Issue #288 - rgbkrk/atom-script
_atom-script/script-view.coffee at 833e7a3a680a53941f972b5ae3c64bcd520eccb9 ・ rgbkrk/atom-script
lib/script-view.coffee#L44 we currently return early from the getShebang method. One possible workaround is returning early if a atom-script config option for ignoreShebang was specified.ignoreShebang って何だろう…。
む。なんとかなったかも。C:\Users\アカウント名\.atom\packages\script\lib\script-view.coffee をいきなり書き換えちゃって、getShebang の中で何もせずに return するよう修正してみたら出力結果が文字化けしなくなった。これなら使えそう。
ところで、拡張子が .coffee ってついてるけど…コレ何? CoffeeScript ってヤツかな。どんな言語なんだろう。
ググってみたら、JavaScript を Ruby っぽく書けるものらしく。なんだかヨサゲ。
[ ツッコむ ]
以上です。