それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

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と互換性ないよ,とのこと.

stackoverflow.com

ドキュメントを見比べてみると...
8.13. enum — 列挙型のサポート — Python 3.6.5 ドキュメント
https://github.com/certik/enum34/blob/master/enum/doc/enum.rst
似たようなインターフェイスAPIだけど,指定するクラスが確かに違うねぇという感じ...

pip uninstall enum34

で解決.