λ§€μ° μ¬μνμ§λ§ μΈκΈν κ°μΉκ° μμ΅λλ€.
Pylintλ torch
μ from_numpy
λ©€λ² ν¨μκ° μλ€λ κ²μ νμ
νμ§ λͺ»ν©λλ€. Pylintμ κ΄ν ν torch.from_numpy
λ μ€μ λ‘ torch._C.from_numpy
μ΄κΈ° λλ¬Έμ
λλ€.
μ΄ stackoverflow μ€λ λ μ λ°λ₯΄λ©΄ 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": [
"--μ€λ₯ μ μ©",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
μ€λ₯ μ μ©μ λ¬Έμ μ λν΄ μΈμλμ§ μμ§λ§ μνλ κ²½μ° 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": [
"--μ€λ₯ μ μ©",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]μ€λ₯ μ μ©μ λ¬Έμ μ λν΄ μΈμλμ§ μμ§λ§ μνλ κ²½μ° pep 8/ν¬λ§· "μ€λ₯"λ₯Ό μ΅μ νλ λ° μ μ©ν©λλ€.
λΉμ μ λ΄ μΈμμ μΌλΆλ₯Ό ꡬνμ΅λλ€! νννν
VS μ½λμμ:
"python.linting.enabled": false
λ₯Ό μΆκ°νλ κ²λ μ΄ κ²½μ°μ ν¨κ³Όκ° μμμ΅λλ€.
@miranthajayatilake μμ μ μν λλ‘ λ¦°νΈλ₯Ό λͺ¨λ λΉνμ±ννλ κ²μ μ’μ ν΄κ²°μ±
μ΄ μλλλ€. pylint
μ pytorchμ λ¬Έμ κ° μλ κ² κ°μ§λ§ μ μκ²λ flake8
κ° μ μλν©λλ€.
VS Codeμμ Ctrl + Shift + P
-> Select linter
-> flake8
λ‘ flake8
λ₯Ό μ νν μ μμ΅λλ€.
λλ μ°λ¦¬κ° μ΄κ²μ κ³ μΉ κ²μ΄λΌκ³ μκ°νμ§ μμ΅λλ€. (λλ λ°©λ²μ΄ μλμ§ λͺ¨λ₯΄κ² λ€.)
"λλ λ°©λ²μ λͺ°λΌμ κ·Έλ κ²νμ§ μμ κ²μ λλ€"λΌλ λ§λ‘ λ¬Έμ λ₯Ό λ§λ¬΄λ¦¬νλ κ²μ λ§€μ° μ₯λ κΎΈλ¬κΈ°μ λλ€.
μμ± λ©€λ²=numpy._,torch._
vscodeλ₯Ό μ¬μ©νλ μ¬λλ€μ μν΄ μ¬μ©μ μ€μ μ μΆκ°
"python.linting.pylintArgs": [
"--μ€λ₯ μ μ©",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]μ€λ₯ μ μ©μ λ¬Έμ μ λν΄ μΈμλμ§ μμ§λ§ μνλ κ²½μ° pep 8/ν¬λ§· "μ€λ₯"λ₯Ό μ΅μ νλ λ° μ μ©ν©λλ€.
Cocμ μ¬μ©νλ κ²½μ° coc-settings.jsonμμ λμΌν κ·μΉμ μ¬μ©ν μ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
vscodeλ₯Ό μ¬μ©νλ μ¬λλ€μ μν΄ μ¬μ©μ μ€μ μ μΆκ°
"python.linting.pylintArgs": [
"--μ€λ₯ μ μ©",
"--generated-members=numpy.* ,torch.* ,cv2.* , cv.*"
]
μ€λ₯ μ μ©μ λ¬Έμ μ λν΄ μΈμλμ§ μμ§λ§ μνλ κ²½μ° pep 8/ν¬λ§· "μ€λ₯"λ₯Ό μ΅μ νλ λ° μ μ©ν©λλ€.