はじめに
PythonでTwitter APIを使っていると、思わぬところでエラーが発生することがあります。
私の場合は、ツイートに自動で“いいね”を付けるプログラムを実行した際に、以下のようなエラーが出ました。
AttributeError: module 'tweepy' has no attribute 'error'
突然のエラーに戸惑いながらも、原因と対処法について調べ、実際にエラーを解消できたので、同じような問題で困っている方の参考になればと思い、まとめておきます。
エラーの原因(推測)
まず、明確な公式ドキュメントによる解説が見つからなかったため、完全な断定はできません。
ただし、私のケースでは、すでに「いいね」済みのツイートに対して再度“いいね”を押そうとしたことが原因のようでした。
Tweepyの処理の中で、「すでに処理済みのツイート」に対して再度処理を行おうとすると、
エラーハンドリング部分でerror
属性を参照しようとし、存在しない属性を参照したことでAttributeErrorが発生したと考えられます。
エラー発生時の状況
# 例:いいね処理
api.create_favorite(tweet.id)
このようなコードを含む自動化処理を繰り返す中で、すでに“いいね”が付いていたツイートを対象にしたときにエラーが発生しました。
解決策(私の場合)
いったん、対象のツイートの“いいね”を手動で外し、再度プログラムを実行してみたところ、エラーは出なくなりました。
また、念のため、該当処理にtry-except
構文を追加してエラーをキャッチすることで、プログラムの中断を防ぐようにも対処しました。
try-except構文の追加例
try:
api.create_favorite(tweet.id)
except Exception as e:
print(f"エラー発生:{e}")
このようにしておくと、仮に同様のエラーが発生しても、プログラム全体が止まることはなく、ログ出力のみに留めることができます。
注意点
tweepy.error
は古いバージョンで使われていた表記であり、現在のTweepy(v4以降)では存在しない属性です。- そのため、
tweepy.error.TweepError
などの記述がある場合、最新版では通用しないことがあります。 - 最新版のTweepyでは、
tweepy.errors
モジュールを使う必要があります(例:tweepy.errors.Forbidden
など)。
まとめ
「AttributeError: module ‘tweepy’ has no attribute ‘error’」というエラーは、主にTweepyのバージョン違いや、既に処理されたツイートへの再操作が原因となる可能性があります。
今回のように、処理対象のデータの状態(例:既に“いいね”されているかどうか)に注意しつつ、
例外処理を加えることで、エラーの発生を防ぎながら安定した自動化が実現できます。
同じようなエラーで困っている方の参考になれば幸いです。