ansibleでenum34が動かない件
ansibleのgceを使ってGCEインスタンスを立てようとしたところ,以下のようなエラーが出た.
{ "changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/home/takahiro/.ansible/tmp/ansible-tmp-1543112337.69-20655971459417/AnsiballZ_gce.py\", line 113, in <module>\n _ansiballz_main()\n File \"/home/takahiro/.ansible/tmp/ansible-tmp-1543112337.69-20655971459417/AnsiballZ_gce.py\", line 16, in _ansiballz_main\n import base64\n File \"/usr/lib/python3.7/base64.py\", line 9, in <module>\n import re\n File \"/usr/lib/python3.7/re.py\", line 143, in <module>\n class RegexFlag(enum.IntFlag):\nAttributeError: module 'enum' has no attribute 'IntFlag'\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1 }
enumにIntFlagがない...?
以下の記事によればpython標準のenumじゃなく,enum34をつかってるけど,python3.6以降は標準のenumと互換性ないよ,とのこと.
ドキュメントを見比べてみると...
8.13. enum — 列挙型のサポート — Python 3.6.5 ドキュメント
https://github.com/certik/enum34/blob/master/enum/doc/enum.rst
似たようなインターフェイスのAPIだけど,指定するクラスが確かに違うねぇという感じ...
pip uninstall enum34
で解決.