طفيف جدا ولكن جدير بالذكر.
لا يلتقط Pylint أن torch
لديه وظيفة العضو from_numpy
. هذا لأن torch.from_numpy
هو في الواقع torch._C.from_numpy
بقدر ما يتعلق الأمر بـ Pylint.
وفقًا لهذا الخيط المكدس ، يعاني أيضًا من هذه المشكلة numpy
.
كمرجع ، يمكنك جعل Pylint يتجاهل ذلك عن طريق تغليف المكالمات "الإشكالية" بالتعليقات التالية.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
الحل يبدو قبيح جدا. لا توجد طريقة لإخبار pylint بتصفية أخطاء معينة؟
يمكنني أن أضيف أن pylint (1.6.5) لا يلتقط cat
، topk
و masked_select
كوظائف العضو أيضًا.
لا أعتقد أننا سنصلح هذا. (لا أعرف ما إذا كانت هناك طريقة للقيام بذلك أيضًا).
يمكنك منع كل هذه الرسائل لهذه الوحدات عن طريق تحرير الأسطر المناسبة من .pylintrc
لتصبح هكذا:
[MASTER]
extension-pkg-whitelist=numpy,torch
[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch
يبدو أن mypy قادرة على التقاط هؤلاء الأعضاء.
بدلاً من التجاهل ، يمكنك الآن القيام بما يلي:
[TYPECHECK]
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=numpy.*,torch.*
أعضاء تم إنشاؤه = numpy. ،شعلة.
بالنسبة لأولئك الذين يستخدمون vscode ، أضف إلى إعدادات المستخدم
"python.linting.pylintArgs": [
"--errors-only"،
"- Generated-members = numpy. *، torch. *، cv2. *، cv. *"
]
الأخطاء فقط ليست مرتبطة بالمشكلة ولكنها مفيدة في supres pep 8 / "أخطاء التنسيق" إذا كنت تريد
سيكون من الجيد السماح بفحص الوحدة ، وكذلك للإكمال التلقائي. ربما يمكن للمرء تغيير from torch._C import *
إلى from torch._C import from_numpy, ...
؟
ربما يمكن للمرء تغيير
from torch._C import *
إلىfrom torch._C import from_numpy, ...
؟
هذا يبدو بسيطا بما فيه الكفاية. هل نحن على يقين من أن هذا هو الطريق للذهاب؟
اعتقدت أننا سنحتاج إلى تلميحات كتابية (والتي سيكون من الصعب إقناع الناس باستخدامها).
هل يجب فتح عدد آخر لمناقشة حل @ moi90 ؟
أعضاء تم إنشاؤه = numpy ._ ، torch._
بالنسبة لأولئك الذين يستخدمون vscode ، أضف إلى إعدادات المستخدم
"python.linting.pylintArgs": [
"--errors-only"،
"- Generated-members = numpy. *، torch. *، cv2. *، cv. *"
]الأخطاء فقط ليست مرتبطة بالمشكلة ولكنها مفيدة في supres pep 8 / "أخطاء التنسيق" إذا كنت تريد
لقد أنقذت جزءًا من حياتي! هاهاهاها
على كود VS:
إضافة "python.linting.enabled": false
عملت أيضًا في هذه الحالة.
لا يعد تعطيل الفحص معًا (كما اقترحه miranthajayatilake ) حلاً جيدًا. يبدو أن pylint
لديه مشاكل مع pytorch ولكن بالنسبة لي ، فإن flake8
يعمل بشكل جيد.
في VS Code ، يمكن للمرء تحديد flake8
بواسطة Ctrl + Shift + P
-> Select linter
-> flake8
.
لا أعتقد أننا سنصلح هذا. (لا أعرف ما إذا كانت هناك طريقة للقيام بذلك أيضًا).
إغلاق القضايا بعبارة "لا أعرف كيف لن أفعل ذلك" أمر شقي للغاية.
أعضاء مُنشأون = numpy ._ ، torch._
بالنسبة لأولئك الذين يستخدمون vscode ، أضف إلى إعدادات المستخدم
"python.linting.pylintArgs": [
"--errors-only"،
"- Generated-members = numpy. *، torch. *، cv2. *، cv. *"
]الأخطاء فقط ليست مرتبطة بالمشكلة ولكنها مفيدة في supres pep 8 / "أخطاء التنسيق" إذا كنت تريد
إذا كنت تستخدم Coc ، فيمكنك استخدام وضع نفس القاعدة في coc-settings.json.
التعليق الأكثر فائدة
بالنسبة لأولئك الذين يستخدمون vscode ، أضف إلى إعدادات المستخدم
"python.linting.pylintArgs": [
"--errors-only"،
"- Generated-members = numpy. *، torch. *، cv2. *، cv. *"
]
الأخطاء فقط ليست مرتبطة بالمشكلة ولكنها مفيدة في supres pep 8 / "أخطاء التنسيق" إذا كنت تريد