"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يقوم Python 3.6.1 برمي \"AttributeError: الوحدة \'enum\' لا تحتوي على سمة \'IntFlag\'؟\"

لماذا يقوم Python 3.6.1 برمي \"AttributeError: الوحدة \'enum\' لا تحتوي على سمة \'IntFlag\'؟\"

تم النشر بتاريخ 2024-11-10
تصفح:761

Why Does Python 3.6.1 Throw \

لماذا يُظهر Python 3.6.1 "خطأ في السمة: الوحدة النمطية 'enum' لا تحتوي على سمة 'IntFlag'؟"

بعد تثبيت Python 3.6.1 لنظام التشغيل macOS X، محاولة استخدام وحدة التحكم أو تشغيل أي شيء باستخدام Python3 تؤدي إلى ظهور رسالة خطأ مشفرة:

AttributeError: module 'enum' has no attribute 'IntFlag'

تحليل المشكلة

نظرًا للفضول لمعرفة سبب حدوث هذا الخطأ، فإننا نفحص الكود المعني:

class RegexFlag(enum.IntFlag):
فئة RegexFlag ترث من enum.IntFlag، وهي عضو في وحدة التعداد. ومع ذلك، فإننا نواجه الخطأ لأن Python يطرح استثناء AttributeError، مما يشير إلى أن تعداد الوحدة يفتقر إلى السمة IntFlag.

الحل

بالتعمق في المشكلة، نكتشف أن وحدة التعداد المستخدمة قد لا تكون خاصة بالمكتبة القياسية. يمكن تثبيت حزمة enum34، المصممة لإصدارات Python الأقل من 3.5، جنبًا إلى جنب مع enum الخاص بالمكتبة القياسية في Python 3.6.1.

يمكن التحقق من صحة التعداد عن طريق فحص مسار الملف الخاص به:

import enum
print(enum.__file__)
إذا كان enum.__file__ لا يشير إلى موقع المكتبة القياسي (على سبيل المثال، /usr/local/lib/python3.6/enum.py)، فمن المحتمل أن تكون الحزمة enum34 هي سبب المشكلة.

الحل لتصحيح الوضع، قم بإلغاء التثبيت enum34:

pip uninstall -y enum34

pip uninstall -y enum34
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3