2009-11-26 54 views
11

Giả sử một lập trình viên có vấn đề sau: anh ta muốn bắt đầu một dự án python mới. Anh ta cần bố cục cơ bản của các công cụ soạn sẵn, như thư mục kiểm tra, thư mục nguồn, tập lệnh setuptools vv .. Làm thế nào để tạo ra tất cả các công cụ và bố cục này bằng một lệnh duy nhất?Khởi tạo bố cục dự án trong python?

Ví dụ, Paster (như đề xuất trong một trong các câu trả lời, cung cấp cho bạn dịch vụ này)

paster create 
Selected and implied templates: PasteScript#basic_package 
A basic setuptools-enabled package 

nhưng Paster là một phần của một công cụ mà phạm vi chính không phải là việc triển khai các gói. Nếu tôi muốn có một mẫu cho một thư viện, và một mẫu cho một ứng dụng thì sao? Làm cách nào tôi có thể sửa đổi mẫu để thêm nội dung cá nhân của riêng tôi vào nó?

+0

... và khởi động kho lưu trữ Bazaar ;-) – jldupont

+0

Tôi rất mệt mỏi khi tạo lại bố cục gói và thiết lập mọi lúc và làm lại rất nhiều lỗi nhỏ. Nếu có cái gì đó làm điều đó cho tôi và tôi chỉ cần điền vào các không gian nó tốt hơn nhiều. –

+0

cũng bởi vì nếu tôi sao chép thiết lập cũ của mình, tôi không đảm bảo được cập nhật với "đúng cách". –

Trả lời

10

Bạn cần một cái gì đó hỗ trợ templating để kéo tắt. Việc sử dụng nhiều nhất trong cộng đồng python là pastescript.

easy_install pastescript # A one-time install 
paster create 

Nếu bạn đã quyết định chọn tên của gói, hơn nó chỉ là:

paster create mypackage 

Nếu bạn muốn tùy chỉnh mẫu, so với cách đơn giản nhất là để tạo ra gói python của riêng bạn bao gồm mẫu tùy chỉnh bạn muốn. Khi bạn đã cài đặt nó vào môi trường của mình, bạn có thể sử dụng mẫu tùy chỉnh này nhiều như bạn muốn. (Đây là loại điều được sử dụng bởi các khung công tác như giá treo để tạo mẫu cho ứng dụng web).

paster create -t libtemplate mypackage 
paster create -t apptemplate mypackage 

Để biết thêm chi tiết về làm thế nào để tạo mẫu (trong đó bao gồm một hỗn hợp của mã và nguồn file) có một cái nhìn tại địa chỉ: http://pythonpaste.org/script/developer.html#templates Bạn sẽ nhận thấy rằng các mẫu hỗ trợ thừa kế, do đó bạn có thể, ví dụ chỉ xây dựng dựa trên mẫu được bao gồm hoặc tạo mẫu của riêng bạn, từ đầu.

Đối với một ví dụ tốt về một mẫu tùy chỉnh, bạn có thể có một cái nhìn tại các giá treo mẫu trong nguồn, ở đây: Pylons Template Code

Bên cạnh đó, nếu bạn chưa sử dụng nó, bạn nên có một cái nhìn tại Ian Bicking của virtualenv. Nó cho phép bạn tạo các môi trường 'ảo' tạm thời cho phép bạn cài đặt các gói python mà không sử dụng và/hoặc xung đột với bất kỳ gói hệ thống nào mà bạn có thể đã cài đặt.

Một thiết lập tiêu chuẩn với virtualenv và pastescript có thể trông như thế này:

mkdir mypackage && cd mypackage 
virtualenv --distribute env 
source env/bin/activate # 'Turns on/activates' the environment 
easy_install pastescript 
paster create mypackage 
+0

Rất tiếc, các nhận xét bị quên không chấp nhận định dạng. Thêm vào câu hỏi. –

+0

+ !: CẢM ƠN BẠN. Bằng cách nào đó, tôi đã bỏ lỡ bản ghi nhớ trên paster. –

1

Bạn có thể làm cho mẫu của riêng bạn. Thực sự hữu ích, ví dụ cho các tiêu chuẩn cấu trúc dự án trong nhà.

Cách tốt nhất để bắt đầu thực hiện của riêng bạn là bắt đầu bằng một ví dụ hiện có và sao chép/dán các bit liên quan từ nó. Đề xuất: ZopeSkel vì đây là một ví dụ khá lớn với nhiều ví dụ. Duyệt qua the source code.

3

Tôi đang sử dụng modern-package-template để bố cục các dự án Python của mình.

mẫu-gói hiện đại là mẫu PasteScript để tạo bố cục ban đầu cho các dự án Python của bạn bằng cách sử dụng các công cụ và thực tiễn hiện đại được theo dõi trong cộng đồng Python.Do đó, các dự án của bạn sẽ có các đặc điểm sau:

  • Sử dụng Phân phối thay vì thiết lập do chính BDFL hỗ trợ.
  • Hỗ trợ xây dựng, mặc dù bạn không bắt buộc phải sử dụng nó.
  • README.txt và NEWS.txt tự động được bao gồm trong siêu dữ liệu gói của bạn dưới dạng long_description, do đó làm cho chúng xuất hiện trong trang PyPI cho dự án của bạn.
  • kịch bản tự động (hoặc .exe) tạo sử dụng Distribute

Thông tin thêm và tải về từ pypi: http://pypi.python.org/pypi/modern-package-template

1

Tôi đã sử dụng cookiecutter. Nó được viết bằng python nhưng có thể được sử dụng cho bất kỳ loại dự án nào; không chỉ là python. Nó sử dụng Jinja cho khuôn mẫu và các tính năng trước và sau móc (viết bằng python hoặc bash) mà có thể dễ dàng tạo/quản lý virtualenvs của một người nào đó hoặc bất cứ điều gì khác mà bạn có thể nghĩ đến. Bạn có thể lưu trữ các mẫu của riêng bạn trong một thư mục cục bộ hoặc kéo các dân tộc khác trực tiếp từ Internet và chạy chúng mà không lưu trữ chúng cục bộ trước tiên. Nó có vẻ linh hoạt hơn, đơn giản hơn để sử dụng, và hữu ích hơn IMHO sau đó paster (tiết lộ: Tôi đã không cố gắng paster). Nó cũng đang trong quá trình phát triển tích cực.

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