2017-11-12 1 views
1

py.xml 패키지를 사용해야하는 프로젝트에서 불행히도 pipenv (내 결정이 아님)과 Python 3 (다시 내 결정이 아님)을 사용해야합니다. 또한 pylint 확인을 통과해야합니다. 이 프로젝트에있는 파일의모듈 'py'에 'xml'이 없습니다.

하나이있다 : 그것은 ... 그것을 찾을 수있는 반면 py가 가상 환경에 설치되어

from py.xml import html 

에도 불구하고, pylint은 그것을 찾을 수 없습니다. 이것은 pylint의 문제와 비슷하지만 그렇지 않을 수도 있습니다. 나는이 혼란을 디버깅하는 방법을 모른다. 다음은 pylint 인격의 증거는 다음과 같습니다

PYTHONPATH=$(pwd) pipenv run pylint --init-hook 'from py.xml import html;print(type(html))' some_module 
<class 'py._xmlgen.NamespaceMetaclass'> 
************* Module some_module 
E: 8, 0: No name 'xml' in module 'py' (no-name-in-module) 
E: 8, 0: Unable to import 'py.xml' (import-error) 

확실하지 나는 위의 라인의 아이러니에 대한 보너스 카르마 포인트를 획득하지만 가상화의 개념을 처음 사용하는 경우, 그냥 조금 넣어 수있는 경우 여기서주의 :

그것은 포함 된 말도 안되는 코드의 모든 하중, 가상 환경을 설정하도록되어있는 프로그램을 실행할 때 PYTHONPATH를 지정하는 이해되지 않는다, 그러나, 유일한은 그것을 어떻게해야했다 , 그렇지 않습니다. 실제로 시도조차하지 않습니다.


아, 그리고 경우에 당신은 py 다른 곳에 설치되었을 수 있다고 생각하고, 어떻게 든 pylint에 액세스 할 수 없습니다했다 ... 음, 그것은 아니었다 :

PYTHONPATH=$(pwd) pipenv run pylint --init-hook 'from py.xml import html;import inspect;print(inspect.getfile(html))' automation 
/home/wvxvw/.local/share/virtualenvs/some_module-UoeXL6dQ/lib/python3.5/site-packages/py/_xmlgen.py 
************* Module automation.conftest 
E: 8, 0: No name 'xml' in module 'py' (no-name-in-module) 
E: 8, 0: Unable to import 'py.xml' (import-error) 

답변

2

으로 source에서 py 네임 스페이스의 특성이 동적으로 만들어 지므로 정적 분석 도구 인 pylint가이를 인식 할 수없는 이유는 다음과 같습니다.

apipkg.initpkg(__name__, attr={'_apipkg': apipkg}, exportdefs={ 
    ... 
    # small and mean xml/html generation 
    'xml' : { 
     '__doc__'   : '._xmlgen:__doc__', 
     'html'    : '._xmlgen:html', 
     'Tag'    : '._xmlgen:Tag', 
     'raw'    : '._xmlgen:raw', 
     'Namespace'   : '._xmlgen:Namespace', 
     'escape'    : '._xmlgen:escape', 
    }, 
}) 

프로젝트의 필림 준수가 필요한 경우 이러한 수입에 대한 경고를 무시할 수 있다는 데 합의해야합니다.

관련 문제