2008-10-05 33 views
12

Khi nói đến việc tổ chức các mô-đun python, hệ thống Mac OS X của tôi là một mớ hỗn độn. Tôi đã gói nằm xung quanh ở khắp mọi nơi trên hdd của tôi và không có hệ thống cụ thể để tổ chức chúng.Làm thế nào để bạn tổ chức các mô-đun Python?

Làm cách nào để bạn quản lý mọi thứ?

Trả lời

12

Lời khuyên của tôi:

  • đọc Installing Python Modules.
  • Đọc Distributing Python Modules.
  • Bắt đầu sử dụng easy_install từ setuptools. Đọc tài liệu cho các công cụ thiết lập.
  • Luôn sử dụng virtualenv. Thư mục gói trang web của tôi chứa các công cụ thiết lập và virtualenv chỉ.
  • Xem dự án mới của Ian Bicking pyinstall.
  • Làm theo mọi thứ Ian Bicking đang hoạt động. Nó luôn luôn là tốt lành.
  • Khi tạo gói của riêng bạn, hãy sử dụng distutils/setuptools. Xem xét sử dụng paster create (xem http://pythonpaste.org) để tạo bố cục thư mục ban đầu của bạn.
+0

Thực ra, tôi đi thêm một bước nữa: các gói trang web của tôi bỏ qua cả các công cụ thiết lập, vì (a) Tôi không cần nó ở đó, (b) virtualenv bao gồm một bản sao đi kèm với nó mà nó có thể sử dụng khi tạo mỗi môi trường, và (c) một số phiên bản của virtualenv gây ra vấn đề cho tôi nếu có sẵn trên toàn hệ thống. –

5

Ngoài PEP8 và easy_install, bạn nên kiểm tra virtualenv. Virtualenv cho phép bạn có nhiều cây thư viện python khác nhau. Tại nơi làm việc, chúng tôi sử dụng virtualenv với môi trường bootstrapping để nhanh chóng thiết lập môi trường phát triển/sản xuất nơi chúng tôi đồng bộ hóa tất cả các phiên bản thư viện w.r.t v.v. Chúng tôi thường điều phối nâng cấp thư viện.

+1

Điều đó thật sự thú vị, bạn có thể giải thích điều này một chút nữa (và có thể đăng một tập lệnh khởi động virtualenv làm ví dụ) không? –

2

Tôi giữ tất cả các nguồn cho gói của tôi bên trong ~/Gói/Gói, và sau đó tôi làm một tiêu chuẩn cài đặt với "thiết lập python2.5 .py cài đặt "trên chúng. Điều này quăng vào (cho tôi) /Library/Frameworks/Python/Versions/current/lib/python2.5/site-packages/. Đối với sự phát triển của phần mềm của riêng tôi, tôi có bí danh được thiết lập để chuyển đổi giữa trunk/branches/1.0, vv, bằng cách pre-prending lên PYTHONPATH. (Tôi phải chạy 'setup.py build_ext --inplace' trong mỗi thư mục này trước khi chúng nhập đúng.)

Cần lưu ý rằng Python2.6 có một số per-user site-packages directory, bạn có thể thấy thuận tiện hơn.

1

Lời khuyên của tôi là cố gắng đưa mọi thứ vào thư mục gói trang web của bạn trừ khi bạn có lý do chính đáng. Và tôi cố gắng tránh easy_install vì tôi thấy rằng nó có xu hướng bay lên sys.path của tôi với vị trí trứng, nhưng đó chỉ là tôi. Một số người thấy nó hữu ích.

Nếu bạn có nhiều chương trình sử dụng các thư viện khác nhau có thể xung đột với nhau, bạn cũng có thể muốn xem virtualenv.

5

Có một số họ thành phần Python.

  1. Nội dung đi kèm với Python. Điều này tự chăm sóc bản thân.

  2. Nội dung bạn có với easy_install. Điều này, cũng, chăm sóc bản thân.

  3. Các gói mà bạn phải thực hiện theo cách khác, hoặc là TARballs hoặc SVN checkouts. Tạo một thư mục Components. Đặt các bản tải xuống hoặc SVN trong đó trước. Mỗi lần duy nhất. Thực hiện cài đặt từ đó.

  4. Các gói bạn đã viết có thể sử dụng lại được. Tôi có một thư mục Projects với mỗi dự án trong thư mục đó. Nếu dự án là một thứ rất có thể tái sử dụng, nó có setup.py và tôi thực sự chạy cài đặt như thể tôi đã tải xuống. Tôi không có nhiều trong số này, nhưng một vài. Một số trong số đó có thể trở thành các dự án mã nguồn mở.

  5. Các ứng dụng cuối cùng bạn viết. Tôi có một thư mục trong Projects với mỗi ứng dụng cấp cao nhất này. Đây thường là những thứ lớn, rambling (như các trang web Django) và không có setup.py. Tại sao? Chúng thường khá phức tạp chỉ với một vài cài đặt máy chủ để quản lý và mỗi cài đặt máy chủ đó là duy nhất. Chúng thường dựa trên PYTHONPATH để xác định các bộ phận của chúng.

Lưu ý chủ đề chung. Hoặc là các thành phần bạn đã tải xuống hoặc chúng là các dự án bạn đang làm việc.

Ngoài ra, tôi giữ riêng biệt (trong phạm vi) từ khách hàng. Tôi có một thư mục chính của các thư mục Client, mỗi thư mục trong đó có các dự án và mỗi dự án có bán hàng và giao hàng. Không phải tất cả các dự án đều bán và giao hàng.

1

Chỉ cần chạy trên trang web này từ một câu hỏi StackOverflow khác: http://infinitemonkeycorps.net/docs/pph/ Địa chỉ này không chỉ là vị trí mô-đun, mà một khi bạn đặt nó là cách bạn có thể dễ dàng xử lý tài liệu, kiểm tra và phân phối.

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