macOS X 用 Python 3.6.1 をインストールした後、コンソールを使用したり、Python3 で何かを実行しようとすると、不可解なエラー メッセージが表示されます。
AttributeError: module 'enum' has no attribute 'IntFlag'
問題分析
このエラーが発生する理由について知りたいので、問題のコード:
<code class="python">class RegexFlag(enum.IntFlag):</code>
クラス RegexFlag は、enum モジュールのメンバーである enum.IntFlag を継承します。ただし、Python が AttributeError 例外をスローするため、エラーが発生します。これは、モジュール列挙型に属性 IntFlag が欠落していることを示します。
解決策
問題を詳しく調べると、次のことがわかります。使用されている enum モジュールは標準ライブラリのものではない可能性があります。 enum34 パッケージは、3.5 より前の Python バージョン用に設計されており、Python 3.6.1 では標準ライブラリの enum と一緒にインストールできます。
enum の信頼性は、ファイル パスを検査することで検証できます:
<code class="python">import enum print(enum.__file__)</code>
enum.__file__ が標準ライブラリの場所 (/usr/local/lib/python3.6/enum.py など) を指していない場合、enum34 パッケージが問題の原因である可能性があります。
解決策
この状況を修正するには、enum34 をアンインストールします。
pip uninstall -y enum34
または、コードを 3.5 以降の両方の Python バージョンで実行する必要がある場合は、 3.5 よりも古い場合は、enum-compat パッケージの使用を検討してください。このパッケージは、標準ライブラリの enum モジュールが欠落している古い Python バージョンに対してのみ enum34 をインストールします。
以上がPython 3.6.1 が「AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。