2011-12-21 36 views
7

G'Day,Định cấu hình Pylint cho các dự án Django

Tôi có một số dự án Django và một số dự án Python khác làm kho lưu trữ git. Tôi có hook trước cam kết chạy Pylint trên mã của tôi trước khi cho phép tôi cam kết nó - hook này không biết dự án là một ứng dụng Django hay một dự án vani Python.

Đối với tất cả các dự án Django của tôi, tôi có một cấu trúc như:

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

Bây giờ, khi tôi chạy pylint về dự án này, nó mang lại cho tôi lỗi như:

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

cho my_django_app.admin mô-đun cho thí dụ.

Làm cách nào để tôi định cấu hình Pylint, để khi nó đang đi qua các dự án django của tôi (không phải dự án python python), nó biết rằng my_django_project/apps cũng phải ở trong sys.path? Thông thường, manage.py thêm nó vào sys.path.

Cảm ơn!

+0

Gói 'my_django_project/apps' và' my_django_project/apps/my_django_app' bình thường là gói Python? Nếu vậy, ở đâu 'my_django_project/apps/__ init __. Py' và' my_django_project/apps/my_django_app/__ init __. Py'? – Flimm

Trả lời

0

Có lẽ điều này không trả lời đầy đủ câu hỏi của bạn, nhưng tôi đề nghị sử dụng django-lint, để tránh những cảnh báo như:

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

Hãy xem init_hook trong tập tin cấu hình pylint.

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

Bạn rõ ràng sẽ cần tệp cấu hình cho mỗi ứng dụng Django và chạy pylint, ví dụ:

pylint --rcfile=pylint.conf my_django_project 
+0

Tốt nhất là giữ .rcfile bên trong dự án và sau đó chỉ cần đặt 'init-hook = import sys; sys.path.insert (0, 'ứng dụng'); '. Bằng cách này bạn có thể chia sẻ dự án với các nhà phát triển mà không cần mã hóa đường dẫn –

0

Thêm vào câu trả lời tuyệt vời Koterpillar, bạn cũng có thể cấu hình của bạn trước khi cam kết nối để thay đổi thư mục hiện hành để my_django_project và chạy pylint từ đó.

Các vấn đề liên quan