2011-09-06 79 views
5

Tôi đã viết một ứng dụng Django, và bây giờ tôi muốn làm cho nó dễ dàng triển khai trên nhiều máy chủ.Tập lệnh cài đặt ứng dụng Django - Cách thêm ứng dụng vào cài đặt INSTALLED_APPS?

Quá trình cài đặt cơ bản là:

  1. Sao chép thư mục ứng dụng vào thư mục dự án Django
  2. Thêm nó vào INSTALLED_APPS trong settings.py
  3. Run ./manage.py collectstatic

ứng dụng cụ thể này không cần phải sử dụng DB, nhưng nếu nó đã làm, tôi muốn sử dụng phía nam và chạy ./manage.py migrate, nhưng đó là một câu chuyện khác.

Phần tôi gặp sự cố là # 2. Tôi không muốn phải chỉnh sửa thủ công tệp này mỗi lần. Cách dễ nhất/mạnh mẽ nhất để cập nhật điều đó là gì?

Tôi đã nghĩ rằng tôi có thể sử dụng mô-đun inspect để tìm biến và sau đó bằng cách nào đó nối thêm, nhưng tôi không có bất kỳ may mắn nào. inspect.getsourcelines sẽ không tìm thấy biến.

Trả lời

2

Dưới đây là lý do của tôi tại sao tôi nghĩ rằng đây sẽ là sai lầm:

  • nó là thêm phức tạp mã mà không cần bất kỳ lớn, thêm một dòng vào cài đặt mỗi khi mà không phải là xấu, đặc biệt là nếu bạn đang làm bướC# 1 và # 3.
  • nó sẽ trở thành không rõ ràng những gì các ứng dụng dự án của bạn đang sử dụng. Khi một nhà phát triển khác làm việc với dự án của bạn, anh ấy có thể không biết rằng ứng dụng của bạn đã được cài đặt.
  • bạn nên thực hiện bướC# 1 và bướC# 2 trên hệ thống phiên bản mã, kiểm tra toàn bộ hệ thống rồi cam kết thay đổi và sau đó triển khai nó.

Tôi nghĩ rằng bạn có điều gì đó sai trái (từ quan điểm của tôi) trong quá trình phát triển/triển khai của bạn nếu bạn đang tìm kiếm một "tối ưu hóa" như vậy. Tôi nghĩ việc sử dụng INSTALLED_APPS dễ dàng hơn và tốt hơn nhiều.

Nếu bạn đang xây dựng một cái gì đó để sử dụng công cộng và bạn muốn làm cho nó dễ dàng nhất có thể để thêm mô-đun thì nó sẽ được tốt đẹp. Trong trường hợp này tôi sẽ khuyên bạn nên gói dự án và ứng dụng của nó như trứng trăn và tận dụng các điểm vào. Sau đó, bạn có thể triển khai một ứng dụng vào dự án như thế này:

pip install my-app-name 

Không có bước nào cả # 1 và # 3! Bước 1 sẽ được thực hiện bởi pip và bướC# 2 và # 3 sẽ được thực hiện bằng các móc cài đặt được xác định trong dự án của bạn.

Paste script là một ví dụ điển hình của việc sử dụng nhập cảnh điểm:

# Install paste script: 
pip install pastescript 

# install django templates for pastescript: 
pip install fez.djangoskel 

# now paste script knows about fez.djangoskel because of entry-points 

# start a new django project from fez's templates: 
paste create -t django_buildout 

Đây là một phần của setup.py từ gói fez.djangoskel:

... 
entry_points=""" 
[paste.paster_create_template] 
django_buildout=fez.djangoskel.pastertemplates:DjangoBuildoutTemplate 
django_app=fez.djangoskel.pastertemplates:DjangoAppTemplate 
... 

zc.buildout là một công cụ tuyệt vời mà có thể làm cho bạn triển khai dễ dàng hơn nhiều. Trứng Python chơi rất đẹp với buildout.

+0

(1) Nó không chỉ thực sự là 1 dòng. Đó là một vài dòng ở một nơi khác. Tôi có thể sử dụng cùng một phương pháp để làm tất cả chúng.1 và 3 sẽ không được thực hiện bằng tay, chúng cũng sẽ được tự động hóa. (2) Tại sao không rõ ràng? Tập lệnh sẽ thêm nó vào INSTALLED_APPS một cách rõ ràng. Bất kỳ nhà phát triển nào cũng có thể xem bản cập nhật bằng cách xem settings.py. (3) Không thể. Đây là một add-on; settings.py có thể thay đổi theo những cách khác mà tôi không muốn chạm vào, vì vậy việc kiểm soát phiên bản nó sẽ không hoạt động. Vì lý do tương tự, PIP sẽ không hoạt động. Tôi không có tệp settings.py tĩnh mà tôi có thể chèn móc vào .-- – mpen

+0

- vì settings.py được duy trì bởi bên thứ ba. – mpen

+0

@Mark, Bạn có thể có tệp cài đặt của riêng mình được theo dõi và sử dụng 'từ việc nhập từ client_settings *' để tải cài đặt của bên thứ ba. Sau đó, bạn có thể sửa đổi thuộc tính INSTALLED_APPS động. – Ski

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