LoginSignup
2
2

More than 5 years have passed since last update.

JavaScripthonをWindowsで動かそうとして諦めた話。

Last updated at Posted at 2017-01-17

JavaScripthonはPython3のコードをjavascript(ES6)のコードにトランスパイルしてくれるらしいツールです。
Github:https://github.com/azazel75/metapensiero.pj

SourceMapにも対応していて、Pythonコードのままデバッグ出来るとのことだったので、
面白そうだと思って試そうと思って、結局あきらめた話を書きます。
(本当は「試してみた」の記事にしたかったのですが。。。)

結論としては、Windowsでやるなということになるのでしょうか?
僕はMac持ってないにわかなので実際はわかりません。

下記参考
http://www.moongift.jp/2016/05/javascripthon-pythonで書いてes6のコードを生成/

WindowsへのInstallで躓いた。

pip install javascripthon

で、「えいっ」てやると、依存している、dukpyのインストールでこけました。
vcvarsall.batが無いと。
なにやらVisual Studio Community 2015を入れろということだったみたいです。
http://thinkami.hatenablog.com/entry/2016/06/06/225903

入れてもう一回「えいっ」てやると、やっぱり落ちました。
unistd.hが無いと。
これunix系の奴らしくpip installではWindowsにInstallできないってことで、諦めます。

Pythonから実行して躓いた。

Githubからクローンして直接実行することにしました。
dukpyはjs動かすためのエンジンらしいので、トランスパイルだけなら実は必要ないんじゃないかというカンで直接実行してみようと思いました。

コード読む感じだと、たぶん必要なさげなのでsrc/metapensiero/pj/api.pyのdukpyのimportをコメントアウトして実行します。

python -m metapensiero.pj source.py

「えいっ」ってやると落ちました。UnicodeDecodeError。
落ちた原因はこれです。

src/metapensiero/pj/api.py
src_text = open(src_filename).readlines()

日本語コメントやらで死にます。
一旦書き換えてしまいます。

src_text = open(src_filename, encoding='utf-8').readlines()

また落ちた。次の原因はこれです。

src/metapensiero/pj/processor/util.py
def parent_of(path):
    return '/'.join(path.rstrip('/').split('/')[:-1])

Windowsのバックスラッシュ区切りが考慮されてませんね。
とりあえず、僕はWindowsで動かしたいので、一旦バックスラッシュに変えてしまいます。

def parent_of(path):
    return '\\'.join(path.rstrip('\\').split('\\')[:-1])

動いたような気がするけど。。。

python -m metapensiero.pj source.py

で何やら.jsファイルと.js.mapファイルができました。わーい。

ですが、ちょっと踏み込んだPythonはトランスパイルできないみたいですね。
たとえば、

for i, x in enumerate(list1):
    # 処理

とか、変数2つのループはダメらしく、エラーになります。

もう諦めよう。まずMac買おう。妻に相談しよう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2