আমি পাইপিন্টকে কীভাবে নকল সদস্যদের চিনতে পারি?


163

আমি পাইথন প্রকল্পে পাইলিন্ট পরিচালনা করছি। পাইলিন্ট নকল সদস্যদের সন্ধান করতে না পেরে অনেক অভিযোগ করে। সদস্যতা চেকগুলি এড়িয়ে যাওয়ার সময় আমি কীভাবে এড়াতে পারি।

কোড থেকে:

import numpy as np

print np.zeros([1, 4])

যা, যখন দৌড়ে, আমি প্রত্যাশিত পেতে:

[[০.০.০. 0.]]

যাইহোক, পাইলট আমাকে এই ত্রুটি দেয়:

ই: 3, 6: মডিউল 'নম্পি' এর কোনও 'জিরো' সদস্য নেই (কোনও সদস্য নেই)

সংস্করণগুলির জন্য, আমি পাইলিন্ট ০.০.০ (অ্যাস্ট্রয়েড ০.০.১, সাধারণ ০.60০.০) ব্যবহার করছি এবং ন্যালি 1.8.0 দিয়ে কাজ করার চেষ্টা করছি।

উত্তর:


75

যদি ডন জায়ামান্নের দুর্দান্ত পাইথন এক্সটেনশনের সাথে ভিজ্যুয়াল স্টুডিও কোডটি ব্যবহার করা হয় , তবে একটি ব্যবহারকারীকে অল্প শ্বেত তালিকাতে সেট করুন:

{
    // whitelist numpy to remove lint errors
    "python.linting.pylintArgs": [
        "--extension-pkg-whitelist=numpy"
    ]
}

2
এই সাহায্য! ভিএসকোডে 1.12.2 এ এটি উইন্ডোজ 10 x64 এ কাজ করে তা নিশ্চিত করেছে।
সিমারা

8
আমার আরও প্রয়োজন ছিল: "পাইথন.লিন্টিং.পাইলিন্টআর্গস": ["--ignored-মডিউলগুলি = নপি", "--ignored-শ্রেণিগুলি = নপি", "- এক্সটেনশন-পিকেজি-হোয়াইটলিস্ট = নপি"]
পিটার

2
উইন্ডোজ x x64 এবং ভিজ্যুয়াল স্টুডিও কোড 1.15.1 এ কাজ করছে পিটারের সমাধান
বিএসপি

3
@ বিএসপি পিটারের পোস্ট সমস্যার সমাধান করে না, এটি এড়িয়ে চলে। আমি যদি এই মন্তব্যটিকে হ্রাস করতে পারি তবে আমি ..
জোনাথন এইচ

4
এটি আমার জন্য পাইলট ২.৩.০ নিয়ে আর কাজ করছে না।
গিলোকন

58

আমি এমনকি সব সংশ্লিষ্ট প্যাকেজ এর সর্বশেষ সংস্করণের সাথে এখানে একই সমস্যা ছিল, ( astroid 1.3.2, logilab_common 0.63.2, pylon 1.4.0)।

নিম্নলিখিত সমাধানটি কবজির মতো কাজ করেছে: আমি বিভাগে numpyআমার pylintrcফাইলটি সংশোধন করে উপেক্ষা করা মডিউলগুলির তালিকায় যুক্ত করেছি [TYPECHECK]:

[TYPECHECK]

ignored-modules = numpy

ত্রুটির উপর নির্ভর করে আপনাকে নিম্নলিখিত লাইনটি যুক্ত করতে হবে (এখনও রয়েছে [TYPECHECK] section):

ignored-classes = numpy

2
পাইলিন্ট ১.৪.৪, অ্যাস্ট্রয়েড ১.৩.৮ এবং পাইথন ৩.৪.৩ সহ লিনাক্সে এটি কাজ করেছে, তবে আমাকে .pylintrc ফাইলের শিরোনামে extension-pkg-whitelist=numpyলাইনটি রাখতে হয়েছিল [MASTER]। পাইলটটি মোটামুটি ভঙ্গুর সফ্টওয়্যার বলে মনে হয় এবং এটি মৌলিক কাজের জন্য এটি চালিয়ে যেতে বিশেষজ্ঞের স্পর্শ প্রয়োজন।
এরিক লেসচিনস্কি

12
এটি একটি ভাল সমাধান নয়। এটি যা করে তা হ'ল কোনও সদস্যের অস্তিত্বের জন্য পাইলট পরীক্ষা পুরোপুরি অক্ষম করা। আদর্শভাবে আপনি চান যে এটি তাদের যথাযথভাবে স্বীকৃতি দেওয়া উচিত, যা অন্যান্য সমাধানগুলি যা করে।
আইফ্রেইলিচ্ট

1
@iFreilicht এটি একটি সুরক্ষা ব্যবস্থা। রানটাইমের সময়, মডিউল সংজ্ঞাগুলি পরিবর্তনশীলভাবে পরিবর্তন করতে পারে; তবে পাইলিন্টে এটি সক্ষম করার ক্ষেত্রে স্বেচ্ছাসেবী কোড চালানো জড়িত। তবুও আমি এখনও উত্তরে কিছু ধরণের নোট আশা করব --extension-pkg-whitelistযা প্রকৃতপক্ষে নির্দিষ্ট মডিউলটির জন্য আমদানি করে।
জেভ স্পিটজ

43

আমি কাজ করছি এমন একটি ছোট্ট নম্পি প্রকল্পের জন্য আমি একই ত্রুটি পেয়েছি এবং সিদ্ধান্ত নিয়েছি যে নপি মডিউলগুলি উপেক্ষা করা ঠিক জরিমানা করবে। আমি এটি .pylintrcদিয়ে একটি ফাইল তৈরি করেছি :

$ pylint --generate-rcfile > ~/.pylintrc

এবং পদুওয়ানের এবং জ_হাগের পরামর্শ অনুসরণ করে আমি নিম্নলিখিত খাতগুলিকে সংশোধন করেছি:

[MASTER]

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=numpy

এবং

[TYPECHECK]

# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=numpy

# List of classes names for which member attributes should not be checked
# (useful for classes with attributes dynamically set). This supports can work
# with qualified names.
ignored-classes=numpy

এবং এটি আমার সমস্যাটিকে "স্থির" করেছে।


6
আপনি কি নিশ্চিত যে এটি দুটি ignored-*প্রবেশদ্বারেও যোগ করতে হয়েছিল ? আমার জন্য, এক্সটেনশন শ্বেত তালিকাতে কেবলমাত্র একটি মডিউল যুক্ত করা পুরোপুরি কাজ করে।
আইফ্রেইলিচ্ট

39

পাইলট এর সাম্প্রতিক সংস্করণগুলিতে --extension-pkg-whitelist=numpyআপনি আপনার পাইলট কমান্ডে যুক্ত করতে পারেন । তারা এই সমস্যাটি একটি অনিরাপদ উপায়ে পূর্ববর্তী সংস্করণে সমাধান করেছিলেন। এখন আপনি যদি স্ট্যান্ডার্ড লাইব্রেরির বাইরের কোনও প্যাকেজের দিকে তাদের আরও মনোযোগ সহকারে দেখতে চান তবে আপনাকে অবশ্যই এটি স্পষ্টভাবে শ্বেত তালিকাভুক্ত করতে হবে। এখানে দেখো.


2
"এখানে দেখুন" লিঙ্কটি মারা গেছে। সমাধানটি এখনও কাজ করছে, এটি বোঝার জন্য কেবল শক্ত (এর) কেন, কেন। লিঙ্কযুক্ত ইস্যু থেকে একটি অংশ যোগ করা ভাল হবে।
জারজিলি পোলোনকাই

"এখানে দেখুন" লিঙ্কটি স্থির করা হয়েছে (এখন গিথুবগুলিতে একই ইস্যুটির রেফারেন্স)
ডেভিড ক্লার্ক

দেখে মনে হচ্ছে এটি মডিউল এবং প্যাকেজগুলির জন্য কাজ করে তবে শ্রেণীর নাম নয়।
ইয়ান এ। ম্যাসন

17

যেহেতু এটি গুগলের শীর্ষ ফলাফল এবং এটি আমাকে এই ধারণা দেয় যে আপনাকে সমস্ত ফাইলে এই সতর্কতাগুলি উপেক্ষা করতে হবে:

সমস্যাটি আসলে পাইলিন্ট / অ্যাস্ট্রয়েডের উত্সগুলিতে গত মাসে https://bitbucket.org/logilab/astroid/commits/83d78af4866be5818f193360c78185e1008fd29e এ ঠিক করা হয়েছে তবে উবুন্টু প্যাকেজগুলিতে এখনও নেই।

উত্স পেতে, ঠিক

hg clone https://bitbucket.org/logilab/pylint/
hg clone https://bitbucket.org/logilab/astroid
mkdir logilab && touch logilab/__init__.py
hg clone http://hg.logilab.org/logilab/common logilab/common
cd pylint && python setup.py install

যার মাধ্যমে শেষ ধাপটির সম্ভবত একটি প্রয়োজন হবে sudoএবং অবশ্যই আপনার ক্লোন করতে পারদর্শী হওয়া প্রয়োজন need


আমি বলব যে আপনার নতুন লগিলাব / সাধারণ ক্লোন করার দরকার নেই তবে আপনাকে নতুন লগিলাব / অ্যাস্ট্রয়েড ইনস্টল করতে হবে। লগিলাব / অ্যাস্ট্রয়েড এবং লগিলাব / পাইলিন্ট পুনরায় ইনস্টল করার মাধ্যমে এটি আমার জন্য বাগটি সমাধান করে।
পগিয়ার

7
ছেলেরা কোন সংস্করণ ব্যবহার করছে? আমি অ্যাস্ট্রয়েড ১.৩.২ এবং পাইলিন্ট ১.৪.০ এ রয়েছি এবং আমি এখনও এই কোডের from numpy import ceilফলাফল নিয়ে সমস্যাটি E: 1, 0: No name 'ceil' in module 'numpy' (no-name-in-module) পেয়েছি উপরে বর্ণিত প্রতিশ্রুতিটি পরীক্ষা করে দেখেছি যে এই পরিবর্তনগুলি আমার কাছে অ্যাস্ট্রয়েডের সংস্করণে রয়েছে।
Zach Dwiel

2
Xubuntu 14.04-তে ঠিক যেমন পরামর্শ দেওয়া হয়েছিল এবং এর ফলস্বরূপ একটি অ-কর্মহীন পাইলেন্ট: py2.7.egg / pylint / lint.py ", 866 লাইন, __অস্ট্রোড_মডিউল অ্যাস্ট্রয়েড.ক্লোজে () এ্যাট্রিবিউট এয়ারার: ​​'মডিউল' অবজেক্টটির কোনও বৈশিষ্ট্য নেই ' বন্ধ '
bli

3
সম্ভবত এটি একটি রিগ্রেশন - সমস্যাটি সমাধানের উদ্দেশ্যে কোনও রিলিজ হয়েছে বলে মনে হয়। উভয় ক্ষেত্রেই, আমি একটি নতুন ইস্যু এটি সম্পর্কে খোলা থাকেন bitbucket.org/logilab/pylint/issue/453/...
dstromberg

4
দৃশ্যত এটি এখনও পাইলট 1.4.2, অ্যাস্ট্রয়েড 1.3.4 এ স্থির নয়: Module 'numpy' has no 'zeros' member (no-member)
বিল

12

Numpy.core এর গুণাবলী দ্বারা উত্পন্ন সমস্ত ত্রুটি উপেক্ষা করার জন্য, আমরা এখন ব্যবহার করতে পারি:

$ pylint a.py --generated-members=numpy.*

অন্য সমাধান হিসাবে, এই বিকল্পটি ~ / .pylintrc বা / etc / pylintrc ফাইলে যুক্ত করুন:

[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.*

এখন পর্যন্ত প্রশ্ন কোডে উল্লিখিত হিসাবে এটি হ্রাসকারী মনে হয়, তবে এখনও অন্য মডিউলগুলির জন্য গুরুত্বপূর্ণ। নেটিফেস এবং ইত্যাদি


ব্যবহার করার সময় আমারও একই সমস্যা ছিল patsy.dmatrices। যুক্ত generated-members=patsy.dmatricesকরা আমার সমস্যার সমাধান করে।
জোনাস ডাহলব্যাক

12

আপনি যদি আরও কনফিগার করতে না চান তবে দয়া করে 'হোয়াইটলিস্ট' এর পরিবর্তে আপনার কোডটি আপনার কনফিগারেশনে যুক্ত করুন।

{
"python.linting.pylintArgs": ["--generate-members"],
}

9
আপনার উল্লেখ করা উচিত যে এটি খুব নির্দিষ্টভাবে ভিএস কোডের ক্ষেত্রে প্রযোজ্য।
bers

এটি আউটপুট দেবেpylint: error: no such option: --generate-members
স্পেসশিপ 222

8

বিগত কয়েক বছর ধরে এই সম্পর্কে বিভিন্ন রকম বাগের প্রতিবেদন করা হয়েছে যেমন https://bitbucket.org/logilab/pylint/issue/58/false-positive-no-member-on-numpy-portorts

আমি অভিযোগগুলি পাই সেই লাইনের জন্য অক্ষম করার পরামর্শ দেব।

# pylint: disable=E1103
print np.zeros([1, 4])
# pylint: enable=E1103

10
আমি এতটা অদ্ভুত ব্যবহার করি, যাতে আমি পুরো ফাইলটিতে কেবল সদস্যবিহীন চেকটি অক্ষম করতে পারি, তবে আমি তা করা এড়াতে চাই।
আলফাডেলটা 14

2
-1 ঠিক কারণ @ বিজন্কের উত্তরটি এখন এইটিকে ছাড়িয়ে যেতে পারে।
লন্ডনরব

পছন্দ করুন ১.৪.২-এ এখনও সমস্যা রয়েছে। পাদুওয়ানের সমাধানটি আরও ভাল যা এর জন্য আপনার কোডটিতে হ্যাকি ক্রাফ্ট যুক্ত করার দরকার নেই।
nnot101

7

সম্ভবত, এটি পদ্ধতিগুলি আমদানির নম্পতির অবিরাম পদ্ধতিতে বিভ্রান্ত। যথা, zerosআসলে numpy.core.multiarray.zeros, বিবৃতি সহ ন্যালি মধ্যে আমদানি করা হয়

from .core import *

পরিবর্তে সঙ্গে আমদানি করা

from .numeric import *

এবং সংখ্যায় আপনি পাবেন

zeros = multiarray.zeros

আমার ধারণা আমি পাইলিন্টের জায়গায় বিভ্রান্ত হব!

দেখুন এই বাগ দেখুন PyLint পাশ জন্য।


আমি চাই আমি কেবল এর মতো একক পদ্ধতি আমদানি করতে পারি, তবে আমি অনেকগুলি ফাংশন ব্যবহার করি এবং এটি আমদানিগুলিকে একটি বিরাট গোলমাল করে তুলবে।
আলফাডেলটা 14

@ Alphadelta14 এমনকি এগুলির সবগুলি খুঁজে পাওয়াও একটি বিশাল গণ্ডগোল হবে। আমার উত্তর শেষে লিঙ্কে পরামর্শ দেখুন।
alko

2
সেই SO লিঙ্কটি পাইলিন্টকে কিছু মডিউল আমদানি করা উপেক্ষা করে। আমি এতটা নিশ্চিত নই যে এটি এটি ফাইলগুলির জন্য কোনও সদস্যের ত্রুটি দমন করতে সক্ষম করবে। আমি যদি সম্ভব হয় তবে আমার পাইলিন্টের প্যাচিং এড়াতেও চাই।
আলফাডেলটা 14

@ আলফাডেলটা ১৪ আমি অনুমান করি তখন পাইলিন্টে প্যাচটির জন্য অপেক্ষা করা উচিত।
alko

4

আমি এটিকে যে কোনও ফাইলের শীর্ষে যুক্ত করতে হয়েছিল যেখানে আমি প্রচুর বিন্দু ব্যবহার করি।

# To ignore numpy errors:
#     pylint: disable=E1101

কেবলমাত্র গ্রহগ্রহের ক্ষেত্রে যদি পাইদেব এবং পাইলট নিয়ে সমস্যা হয় ...


4

J_hougs উত্তরের এক্সটেনশনে, আপনি এখন এই পংক্তিতে প্রশ্নযুক্ত মডিউলগুলি .pylintrc এ যুক্ত করতে পারেন, যা ইতিমধ্যে প্রজন্মের খালি তৈরি করা হয়েছে:

extension-pkg-whitelist=numpy

আপনি এটি করে একটি নমুনা তৈরি করতে পারেন। pylintrc:

pylint --generate-rcfile > .pylintrc

এবং তারপরে উল্লিখিত লাইনটি সম্পাদনা করুন


4

এটি শেষ পর্যন্ত পাইলেন্ট ১.৮.২ এ সমাধান করা হয়েছে। বাক্সের বাইরে কাজ করে, কোনও পাইলট্রিক টুইকের প্রয়োজন নেই!


3

এই সমস্যার জন্য আমি প্রকাশিত সিউডো-সলিউশন।

#pylint: disable=no-name-in-module
from numpy import array as np_array, transpose as np_transpose, \
      linspace as np_linspace, zeros as np_zeros
from numpy.random import uniform as random_uniform
#pylint: enable=no-name-in-module

তারপর, আপনার কোডে পরিবর্তে কলিং numpyহিসাবে ফাংশন np.arrayএবং np.zerosইত্যাদি, আপনি লিখতে হবে np_array, np_zerosইত্যাদি এই পদ্ধতির অন্যান্য উত্তর প্রস্তাবিত অন্যান্য পন্থা বনাম উপকারিতা:

  • পাইলট অক্ষম / সক্ষম আপনার কোডের একটি ছোট অঞ্চলে সীমাবদ্ধ
  • এর অর্থ হ'ল আপনাকে পাইলট নির্দেশের সাহায্যে নিম্পী ফাংশনটির অনুরোধ জানানো প্রতিটি একক লাইনকে ঘিরে রাখতে হবে না।
  • আপনি আপনার পুরো ফাইলটির জন্য ত্রুটিটি পাইলট অক্ষম করছেন না, যা আপনার কোড সহ অন্যান্য সমস্যার মুখোশ ঘটাতে পারে।

এর স্পষ্ট অসুবিধাটি হ'ল আপনার ব্যবহার করা প্রতিটি অলস ফাংশনটি আপনাকে স্পষ্টভাবে আমদানি করতে হবে। পদ্ধতির আরও বিস্তারিতভাবে ব্যাখ্যা করা যেতে পারে। আপনি আপনার নিজের মডিউলটি সংজ্ঞায়িত করতে পারেন, এটি নীচে numpy_importerহিসাবে বলুন

""" module: numpy_importer.py
       explicitely import numpy functions while avoiding pylint errors  
"""
#pylint: disable=unused-import
#pylint: disable=no-name-in-module
from numpy import array, transpose, zeros  #add all things you need  
from numpy.random import uniform as random_uniform
#pylint: enable=no-name-in-module

তারপরে, আপনার অ্যাপ্লিকেশন কোডটি কেবল এই মডিউলটি (নাম্পের পরিবর্তে) হিসাবে আমদানি করতে পারে

import numpy_importer as np 

এবং যথারীতি নাম ব্যবহার করে: np.zeros, np.arrayইত্যাদি

এর সুবিধাটি হ'ল আপনার একটি একক মডিউল থাকবে যার numpyসাথে সম্পর্কিত সমস্ত আমদানি একবার এবং সকলের জন্য হয়ে যায় এবং তারপরে আপনি যেখানে চান সেখানে সেটিকে একক লাইন দিয়ে আমদানি করুন। তবুও আপনাকে সতর্ক থাকতে হবে যে numpy_importerনামগুলি আমদানি numpyকরবে না যেগুলি ত্রুটিগুলি পাইল্ট দ্বারা ধরা পড়বে না কারণ এটি বিদ্যমান নেই ।


2

নপি, স্কিপি, স্কালার্ন, নিপি ইত্যাদি নিয়ে আমার এই সমস্যাটি ছিল এবং আমি এপিলেটটি এ জাতীয়ভাবে মোড়ানো দ্বারা সমাধান করেছি:

$ বিড়াল epylint.py

#!/usr/bin/python

"""
Synopsis: epylint wrapper that filters a bunch of false-positive warnings and errors
Author: DOHMATOB Elvis Dopgima <gmdopp@gmail.com> <elvis.dohmatob@inria.fr>

"""

import os
import sys
import re
from subprocess import Popen, STDOUT, PIPE

NUMPY_HAS_NO_MEMBER = re.compile("Module 'numpy(?:\..+)?' has no '.+' member")
SCIPY_HAS_NO_MEMBER = re.compile("Module 'scipy(?:\..+)?' has no '.+' member")
SCIPY_HAS_NO_MEMBER2 = re.compile("No name '.+' in module 'scipy(?:\..+)?'")
NIPY_HAS_NO_MEMBER = re.compile("Module 'nipy(?:\..+)?' has no '.+' member")
SK_ATTR_DEFINED_OUTSIDE_INIT = re.compile("Attribute '.+_' defined outside __init__")
REL_IMPORT_SHOULD_BE = re.compile("Relative import '.+', should be '.+")
REDEFINING_NAME_FROM_OUTER_SCOPE = re.compile("Redefining name '.+' from outer scope")

if __name__ == "__main__":
    basename = os.path.basename(sys.argv[1])
    for line in Popen(['epylint', sys.argv[1], '--disable=C,R,I'  # filter thesew arnings
                       ], stdout=PIPE, stderr=STDOUT, universal_newlines=True).stdout:
        if line.startswith("***********"):
            continue
        elif line.startswith("No config file found,"):
            continue
        elif "anomalous-backslash-in-string," in line:
            continue
        if NUMPY_HAS_NO_MEMBER.search(line):
            continue
        if SCIPY_HAS_NO_MEMBER.search(line):
            continue
        if SCIPY_HAS_NO_MEMBER2.search(line):
            continue
        if "Used * or ** magic" in line:
            continue
        if "No module named" in line and "_flymake" in line:
            continue
        if SK_ATTR_DEFINED_OUTSIDE_INIT.search(line):
            continue
        if "Access to a protected member" in line:
            continue
        if REL_IMPORT_SHOULD_BE.search(line):
            continue
        if REDEFINING_NAME_FROM_OUTER_SCOPE.search(line):
            continue
        if NIPY_HAS_NO_MEMBER.search(line):
            continue
        # XXX extend by adding more handles for false-positives here
        else:
            print line,

এই স্ক্রিপ্টটি কেবল এপিলিন্ট চালায়, তারপরে মিথ্যা-ইতিবাচক সতর্কতা এবং ত্রুটিগুলি ফিল্টার করার জন্য এর আউটপুটটিকে স্ক্র্যাপ করে। আপনি আরও এলিফ ক্ষেত্রে যুক্ত করে এটি বাড়িয়ে দিতে পারেন।

নোট: এটি যদি আপনার ক্ষেত্রে প্রযোজ্য হয়, তবে আপনি আপনার পাইচারারগুলি পরিবর্তন করতে চান sh তাই এটি পছন্দ করে likes

#!/bin/bash

epylint.py "$1" 2>/dev/null
pyflakes "$1"
pep8 --ignore=E221,E701,E202 --repeat "$1"
true

(অবশ্যই, আপনাকে প্রথমে epylint.py এক্সিকিউটেবল করতে হবে)

আমার .emacs https://github.com/dohmatob/mydotemacs এর লিঙ্কটি এখানে । আশা করি এটি কারও কাজে লাগবে।


2

এটি কমপক্ষে পাইলিন্ট ১.১.০ তে কাজ করছে বলে মনে হচ্ছে:

[TYPECHECK]

ignored-classes=numpy

2

এই সমাধানটি আমার পক্ষে কাজ করেছিল

মূলত, নীচে বাম থেকে গিয়ার আইকনটি নির্বাচন করতে যান>> সেটিং => ওয়ার্কস্পেস সেটিং => এক্সটেনশন => পাইথন কনফিগারেশন => যেকোন সেটিংসে ক্লিক করুন। json => এটিকে "পাইথন.লিনটিং.পাইলিন্টআর্গস" ফাইলটিতে যুক্ত করুন: [" --extension-pkg-whitelist = numpy "] আমি VS 1.27.2 ব্যবহার করছি


2

আমার আলাদা মডিউল ( kivy.properties) যা একইভাবে মোড়ানো সি মডিউল হিসাবে একই সমস্যা ছিল numpy

ভিএসকোড ভি 1.38.0 ব্যবহার করে, গৃহীত সমাধানটি প্রকল্পের জন্য সমস্ত লিটিং বন্ধ করে দিয়েছে। সুতরাং, যদিও এটি সত্যই মিথ্যা-ইতিবাচক অপসারণ করেছে no-name-in-module, বাস্তবে এটি পরিস্থিতির উন্নতি করতে পারেনি।

--ignored-modulesআপত্তিজনক মডিউলটিতে যুক্তিটি ব্যবহার করা আমার পক্ষে সেরা কাজ ছিল । ট্রাবল মাধ্যমে কোনো আর্গুমেন্ট ক্ষণস্থায়ী, হয় python.linting.pylintArgsআউট টিস্যু ডিফল্ট VSCode সেটিংস , তাই আপনি ঐ এছাড়াও পুনরায় সেট করতে হবে। এটি আমাকে নিম্নলিখিত সেটিংস.জসন ফাইলের সাথে ছেড়ে দিয়েছে:

{
    "python.pythonPath": "C:\\Python\\Python37\\python.exe",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true,
    "python.linting.pylintArgs": [
        "--ignored-modules=kivy.properties",
        "--disable=all",
        "--enable=F,E,unreachable,duplicate-key,unnecessary-semicolon,global-variable-not-assigned,unused-variable,binary-op-exception,bad-format-string,anomalous-backslash-in-string,bad-open-mode"
    ]
}

"পাইথন.লিন্টিং.পাইলিন্ট আরগস": ["- জেনারেট-মেম্বার্স = কিভি.পোপার্টি"]
ইয়ে

1

কী উত্তর দিচ্ছে তা সংক্ষিপ্ত করতে পূর্ববর্তী উত্তর থেকে কিছুটা কপি পেস্ট করুন (কমপক্ষে আমার জন্য: ডেবিয়ান-জেসি)

  1. কিছু পুরানো সংস্করণে pylintএটিকে নম্পি (এবং অন্যান্য অনুরূপ প্যাকেজ) সহ কাজ করে আটকাতে সমস্যা হয়েছিল।

  2. এখন সেই সমস্যাটি সমাধান হয়েছে তবে বাহ্যিক সি প্যাকেজগুলি (সি কোড-লাইক নাম্পি- তে অজগর ইন্টারফেস) সুরক্ষার কারণে ডিফল্টরূপে অক্ষম রয়েছে।

  3. pylintএগুলি ফাইলে ব্যবহারের অনুমতি দেওয়ার জন্য আপনি একটি সাদা তালিকা তৈরি করতে পারেন ~/.pylintrc

চালানোর জন্য বেসিক কমান্ড: # কেবলমাত্র আপনার বাড়িতে ইতিমধ্যে একটি .pylintrc ফাইল না থাকলে $ পাইলেট - জেনারেট-rcfile> .pylintrc

তারপরে ফাইলটি খুলুন এবং extension-pkg-whitelist=কমা দ্বারা আলাদা হয়ে যাওয়ার পরে আপনার প্যাকেজগুলি যুক্ত করুন । বিকল্পটি ব্যবহার করে আপনি একই আচরণ করতে পারেন--extension-pkg-whitelist=numpyকমান্ড লাইন থেকে ।

আপনি যদি [TYPECHECK]বিভাগে কিছু প্যাকেজ উপেক্ষা করেন তার অর্থ pylintএই প্যাকেজগুলির সাথে সম্পর্কিত ত্রুটি কখনও দেখায় না। অনুশীলনে, pylintআপনাকে এই প্যাকেজগুলির বিষয়ে কিছু বলবে না।


0

আমি নাম্পির মতো লাইব্রেরিতে ডায়নামিক সদস্যদের সাথে ইস্যুটি সমাধান করার জন্য পাইলট থেকে পাইলটে কাজ করছি। এটি একটি "ডায়নামিক-মডিউল" বিকল্প যুক্ত করে যা মডিউলটির আসল আমদানি করে রানটাইমের সময় সদস্যদের উপস্থিত রয়েছে কিনা তা পরীক্ষা করতে বাধ্য করে। লগিলাব / পাইলটে ইস্যু # 413 দেখুন । একটি টান অনুরোধও আছে, একটি মন্তব্যে লিঙ্ক দেখুন।


পাইদেব এটি এটিকে সমাধান করে (লোড-ইনস্পেক্ট করার মডিউলগুলির একটি বিশেষ তালিকা)। কেমন চলছে সেই কাজ?
এপু

0

একটি দ্রুত উত্তর: পাইলটটি 1.7.1 এ আপডেট করুন (প্যাকেজগুলি পরিচালনা করতে আপনি যদি কনডা ব্যবহার করেন তবে কনডা-ফোরজ প্রদত্ত পাইলটটি 1.7.1 ব্যবহার করুন)

আমি এখানে পাইলেট গিটহাবের অনুরূপ সমস্যা পেয়েছি এবং কেউ 1.7.1 আপডেট করার পরে সবকিছু ঠিকঠাক বলে জবাব দিয়েছে।


0

আমি নিশ্চিত কিনা এটি সমাধান কিনা, তবে ভিএসকোডে একবার আমি পাইলট সক্ষম করতে আমার ব্যবহারকারী সেটিংসে স্পষ্টভাবে লিখেছিলাম, সমস্ত মডিউল স্বীকৃত ছিল।

{
    "python.linting.pep8Enabled": true,
    "python.linting.pylintEnabled": true
}

0

ইদানীং (যেহেতু স্পাইডার বা পাইলিন্টে কোনও কিছু পরিবর্তন হয়েছে বা?), আমি অ্যাস্ট্রোপিস কনস্ট্যান্টস প্রতীকগুলিতে স্পাইডারের স্ট্যাটিক কোড বিশ্লেষণ থেকে E1101 ত্রুটিগুলি ("কোনও সদস্য নয়") পাচ্ছি। কেন জানি না।

লিনাক্স বা ইউনিক্স সিস্টেমে সমস্ত ব্যবহারকারীর জন্য আমার সরলিক সমাধানটি (ম্যাক সম্ভবত অনুরূপ) একটি / ইত্যাদি / পাইলিন্টক্রিকে নিম্নরূপ তৈরি করতে হবে:

[TYPECHECK]
ignored-modules=astropy.constants

অবশ্যই এটি পরিবর্তে ব্যক্তিগত $ HOME / .pylintrc ফাইলে রাখা যেতে পারে। এবং, আমি একটি বিদ্যমান ফাইল আপডেট করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.