ホームページ  >  記事  >  バックエンド開発  >  Python 3.6.1 が「AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'」をスローするのはなぜですか?

Python 3.6.1 が「AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'」をスローするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 14:45:52754ブラウズ

Why Does Python 3.6.1 Throw

Python 3.6.1 で「AttributeError: Module 'enum' Has No Attribute 'IntFlag'?」がスローされるのはなぜですか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。