SIP를 사용하여 여러 원시 C++ 클래스를 파이썬으로 내보내겠습니다.pylint C++/SIP로 작성된 모듈의 "정의되지 않은 변수"
# pymaplib/__init__.py
# Make all of maplib_sip available in pymaplib.
from maplib_sip import *
...
def parse_coordinate(coord_str):
...
# LatLon is a class imported from maplib_sip.
return LatLon(lat_float, lon_float)
Pylint이 maplib_sip
에서 LatLon
이 올 것을 인식하지 않습니다 :
error pymaplib parse_coordinate 40 15 Undefined variable 'LatLon'
불행하게도, 같은 내가 직접 결과 maplib_sip.pyd
모듈을 사용하지만, 오히려 파이썬 패키지 pymaplib
에 포장하지 않는다 maplib_sip
의 모든 클래스뿐만 아니라 내가 사용하는 wxPython (Phoenix)의 코드 대부분에서 발생합니다. 이것은 효과적으로 거짓 오류의 양이 실제 문제를 왜곡 시키므로 Pylint를 쓸모 없게 만듭니다.
additional-builtins
내 문제에 대한이 잘 작동하지 않습니다
# Both of these don't remove the error:
additional-builtins=maplib_sip.LatLon
additional-builtins=pymaplib.LatLon
# This does remove the error in pymaplib:
additional-builtins=LatLon
# But users of pymaplib still give an error:
# Module 'pymaplib' has no 'LatLon' member
을 나는이 처리 방법은? maplib_sip.LatLon
이 실제로 존재한다고 필립이 어떻게 든 말할 수 있습니까? 심지어 더 나은, 어떻게 든 내포 (IPython에서 작동)를 통해 그 자체를 알아낼 수 있습니까?
필자는 정의되지 않은 변수 검사를 비활성화 할 필요가 없다. 필자가 필 린트의 큰 장점 중 하나이기 때문이다.
프로그램 버전 : Pylint 1.2.1
, astroid 1.1.1, common 0.61.0
, 난 당신이 import *
사용을 중지 옆에 있다면, 당신의 경우에 작동 잘 모르겠어요하지만 Python 3.3.3 [32 bit] on Windows7
pylint는 C++ 확장 모듈을 처리하지 못하는 것 같습니다 (AST를 얻을 수 없음). 게다가, 존재하지 않는 (non-global-scope) 클래스에 대해 말할 수있는 옵션이없는 것 같지만 알 수는 없습니다. 이것은 내가 뻔뻔스러워하는 그런 뻔뻔스러운 생략처럼 보인다. –