2011-12-21 3 views
7

G'Day,구성 Pylint 내가 장고 프로젝트의 수와 자식 저장소와 같은 다른 파이썬 프로젝트의 번호를 가지고

프로젝트. 나는 그것을 위임 할 수있게하기 전에 코드에서 Pylint를 실행하는 사전 커밋 훅 (hook)을 가지고있다.이 훅은 프로젝트가 Django 애플리케이션인지 아니면 바닐라 파이썬 프로젝트인지를 알지 못한다. 나는이 프로젝트에 pylint를 실행할 때 이제

> my_django_project 
|-- manage.py 
|-- settings.py 
|--> apps 
    |--> my_django_app 
     |-- models.py 
     |-- admin.py 

, 그것은 나에게 같은 오류를 제공합니다 : 내 모든 장고 프로젝트의

, 나는 같은 구조를 가지고

F: 4,0: Unable to import 'my_django_app.models' 

에 대한 my_django_app.admin 모듈 예.

어떻게해야합니까? 내가 장고 프로젝트 (바닐라 파이썬 프로젝트가 아닌)를 다룰 때, my_django_project/appssys.path에 있어야한다는 것을 알기 위해 Pylint를 구성합니까? 일반적으로 manage.py은이를 sys.path에 추가합니다.

감사합니다.

+0

'my_django_project/apps'와'my_django_project/apps/my_django_app'는 일반적인 Python 패키지입니까? 그렇다면'my_django_project/apps/__ init __. py'와'my_django_project/apps/my_django_app/__ init __. py' 파일은 어디에 있습니까? – Flimm

답변

0

아마이 완전히 귀하의 질문에 대답하지 않지만, 내가 좋아하는 경고를 피하기 위해, django-lint를 사용하는 것이 좋습니다 :

F: 4: Unable to import 'myapp.views' 
E: 15: MyClass.my_function: Class 'MyClass' has no 'objects' member 
E: 77: MyClass.__unicode__: Instance of 'MyClass' has no 'id' member 
3

이 pylint 구성 파일에서 init_hook를 살펴 보자합니다.

init-hook=import sys; sys.path.insert(0, 'my_django_project/apps'); 

당연히 Django 응용 프로그램마다 구성 파일이 필요하며 pylint를 다음과 같이 실행하십시오. Koterpillar의 위대한 대답에 추가

pylint --rcfile=pylint.conf my_django_project 
+0

최상의 것은 .rc 파일을 프로젝트 안에두고 단순히'init-hook = import sys; sys.path.insert (0, 'apps');'. 이렇게하면 경로를 하드 코딩하지 않고도 개발자가 프로젝트를 공유 할 수 있습니다. –

0

, 당신은 또한 구성 할 수 사전 커밋 my_django_project에 현재 디렉토리를 변경하고 거기에서 pylint를 실행하는 훅을.