Sangat kecil tapi layak disebut.
Pylint tidak mengerti bahwa torch
memiliki fungsi anggota from_numpy
. Itu karena torch.from_numpy
sebenarnya torch._C.from_numpy
sejauh menyangkut Pylint.
Menurut utas stackoverflow ini numpy
juga mengalami masalah ini.
Sebagai referensi, Anda dapat meminta Pylint mengabaikannya dengan membungkus panggilan "bermasalah" dengan komentar berikut.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
solusinya tampaknya cukup jelek. apakah tidak ada cara untuk memberi tahu pylint untuk memfilter kesalahan tertentu?
Saya dapat menambahkan bahwa pylint (1.6.5) tidak mengambil cat
, topk
dan masked_select
sebagai fungsi anggota juga.
Saya tidak berpikir kita akan memperbaiki ini. (Saya juga tidak tahu apakah ada cara untuk melakukannya).
Anda dapat menyembunyikan semua pesan tersebut untuk modul ini dengan mengedit baris .pylintrc
yang sesuai menjadi seperti ini:
[MASTER]
extension-pkg-whitelist=numpy,torch
[TYPECHECK]
ignored-modules=numpy,torch
ignored-classes=numpy,torch
mypy tampaknya dapat mengambil anggota ini.
Alih-alih mengabaikan, Anda sekarang dapat melakukan:
[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.*
dihasilkan-anggota=numpy. ,obor.
Bagi mereka yang menggunakan vscode, tambahkan ke pengaturan pengguna
"python.linting.pylintArgs": [
"--hanya kesalahan",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
error-only tidak terkait dengan masalah ini tetapi berguna untuk menekan pep 8/memformat "kesalahan" jika Anda mau
Akan lebih baik untuk mengizinkan pemeriksaan modul, juga untuk penyelesaian otomatis. Mungkin seseorang dapat mengubah from torch._C import *
menjadi from torch._C import from_numpy, ...
?
Mungkin seseorang dapat mengubah
from torch._C import *
menjadifrom torch._C import from_numpy, ...
?
Ini tampaknya cukup sederhana. Apakah kita yakin ini jalan yang harus ditempuh?
Saya pikir kami memerlukan petunjuk ketik (yang akan jauh lebih sulit untuk meyakinkan orang untuk menggunakannya).
Haruskah kita membuka masalah lain untuk membahas solusi @moi90 ?
generate-members=numpy._,torch._
Bagi mereka yang menggunakan vscode, tambahkan ke pengaturan pengguna
"python.linting.pylintArgs": [
"--hanya kesalahan",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]error-only tidak terkait dengan masalah ini tetapi berguna untuk menekan pep 8/memformat "kesalahan" jika Anda mau
Anda menyelamatkan sebagian dari hidup saya! ha ha ha ha
Pada kode VS:
Menambahkan "python.linting.enabled": false
juga berhasil dalam kasus ini.
Menonaktifkan linting bersama-sama (seperti yang disarankan oleh @miranthajayatilake ) bukanlah solusi yang baik. Tampaknya pylint
memiliki masalah dengan pytorch tetapi bagi saya flake8
berfungsi dengan baik.
Dalam Kode VS, seseorang dapat memilih flake8
dengan Ctrl + Shift + P
-> Select linter
-> flake8
.
Saya tidak berpikir kita akan memperbaiki ini. (Saya juga tidak tahu apakah ada cara untuk melakukannya).
Menutup masalah dengan "Saya tidak tahu bagaimana karenanya tidak akan" sangat nakal.
generate-members=numpy._,torch._
Bagi mereka yang menggunakan vscode, tambahkan ke pengaturan pengguna
"python.linting.pylintArgs": [
"--hanya kesalahan",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]error-only tidak terkait dengan masalah ini tetapi berguna untuk menekan pep 8/memformat "kesalahan" jika Anda mau
Jika Anda menggunakan Coc, Anda dapat menggunakan aturan yang sama di coc-settings.json Anda.
Komentar yang paling membantu
Bagi mereka yang menggunakan vscode, tambahkan ke pengaturan pengguna
"python.linting.pylintArgs": [
"--hanya kesalahan",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
error-only tidak terkait dengan masalah ini tetapi berguna untuk menekan pep 8/memformat "kesalahan" jika Anda mau