Syntax Error.

[Sy] Python で 「AttributeError」となって module がうまく動かない場合の原因と対処

2018/01/21

Python で「 AttributeError: module ‘xxx’ has no attribute ‘new’ 」とエラーになる時の原因と対処についてです。

エラーの内容

前回の記事のコードを試していると、エラーが発生。

⇒ [Sy] HMAC-SHA-256 を計算するサンプル(Python)

最初 hmac.py というファイル名で保存してました。コードとエラーはこのような感じです。

(hmac.py)

import hashlib
import hmac

secretKey = b'secret key'
payload = b'Hello World!'

signature = hmac.new(secretKey, payload, hashlib.sha256).hexdigest()

print(signature)
$ python hmac.py
Traceback (most recent call last):
  File "hmac.py", line 2, in <module>
    import hmac
  File "/Users/utano320/Documents/Develop/hmac.py", line 9, in <module>
    signature = hmac.new(secretKey, payload, hashlib.sha256).hexdigest()
AttributeError: module 'hmac' has no attribute 'new'

原因&解決方法

原因は、 import しようとしている hmac というモジュール名と、 hmac.py というファイル名が競合してしまって、正しく hmac モジュールが import されていないということでした。

ということなので、解決方法としては hmac.py というファイル名を hamc_test.py などに変えればOKでした。

$ mv hmac.py hmac_test.py
$ python hmac_test.py
e3140f6d0e6ba8608551454bce0a6d19268021165da2a9343e8b29f43ab48a3a