Python2系なのに Blockly のビルドができない
(追記:2020年1月時点ですでに blockly は python 3 に対応しているようです。このページの情報は古い可能性があります。)
Blockly をローカル環境にクローンしてきて、ビルドしようとすると以下のようなエラーが出たのですが、 これはローカル環境に複数の python がインストールされていることが原因だったようです。
$ python2.7 build.py Traceback (most recent call last): File "i18n/create_messages.py", line 25, in <module> from common import read_json_file File "/Users/(略)/blockly/i18n/common.py", line 62 except ValueError, e: ^ SyntaxError: invalid syntax ... (以下略)
Blockly のコードは python2.7.x 系で動くことになっているので、2.7.10 と 2.7.16 の両方で試したのですが、同じエラーが出てしまいました。
エラーそのものは「except
を使うときにカンマが含まれているのがおかしい」というものですが、
2.7.x 系ではこのシンタックスはサポートされていることになっています。…謎です。
ネットを検索したら全く同じような状況に陥っている人がいて、その人は自分のローカル環境が原因だったと書いているので、 私も自分の環境の python たちを泣く泣くアンインストールすることにしました。
私の環境は以下のようになっています。
- MacOS Mojave 10.14.5
- Homebrew と anaconda の両方を使っています
- Homebrew で python2.x 系と python3.x 系を両方インストール済みで、それぞれ
python2.7
python3.6
というコマンドで動かすことができる
とにかく何が原因なのかわからないので、anaconda を uninstall し、その後 homebrew でインストールされている python を消します。
Homebrew では複数のパッケージで python に依存しているので、普通に brew uninstall
しようとすると warning が出てきます。
そこで --ignore-dependencies
というオプションをつけて強制的に uninstall してみます…。
$ conda install anaconda-clean $ anaconda-clean $ brew uninstall python3 --ignore-dependencies $ brew uninstall python@2 --ignore-dependencies
ひとまずこの状態で python という名前を含むコマンドを探すと以下のようになります。
$ python [tab] [tab] python python2.7 pythonw python-config python2.7-config pythonw2.7
このとき、python コマンドの指すものは /usr/bin
にあるもの(もともと MacOS に入っているもの)になっています。
$ which python /usr/bin/python $ which python2.7 /usr/bin/python2.7 $ python --version Python 2.7.10 $ python2.7 --version Python 2.7.10
この状態でもう一度 blockly のビルドをすると成功しました!(ここまで頑張って uninstall してもうまくいかなかったら逆に悲しい)
uninstall してしまった python たちはまたあとで少しずつ install してあげようと思います…。