「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python 3.6.1 が「AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'」をスローするのはなぜですか?

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

2024 年 11 月 10 日に公開
ブラウズ:816

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'

問題分析

]

なぜこのエラーが発生するのか知りたいので、問題のコードを調べます。

class RegexFlag(enum.IntFlag):

クラス RegexFlag は enum.IntFlag を継承します。 、これは enum モジュールのメンバーです。ただし、Python が AttributeError 例外をスローするため、エラーが発生します。これは、モジュール列挙型に属性 IntFlag がないことを示します。

Solution

問題を詳しく調べてみると、次のことがわかります。使用されている enum モジュールは標準ライブラリのものではない可能性があります。 enum34 パッケージは、3.5 より前の Python バージョン用に設計されており、Python 3.6.1 では標準ライブラリの enum と一緒にインストールできます。

enum の信頼性の検証は、ファイル パスを検査することで実行できます:

import enum
print(enum.__file__)

enum.__file__ が標準ライブラリの場所 (/usr/local/lib/python3.6/enum.py など) を指していない場合、enum34 パッケージはおそらく問題の原因。

解決策

状況を修正するには、enum34:

pip uninstall -y enum34

をアンインストールします。 3.5 より前の Python バージョンと 3.5 以降の Python バージョンの両方でコードを実行する必要がある場合は、enum-compat パッケージの使用を検討してください。このパッケージは、標準ライブラリの enum モジュールが欠落している古い Python バージョンに対してのみ enum34 をインストールします。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3