setuptools vs distutils: tại sao là distutils vẫn còn một điều?


0 Phiếu
Đã hỏi 25/5/2016 bởi Gur1443Of (49,540 điểm)
Python có một lịch sử khó hiểu của các công cụ có thể sử dụng để package và mô tả dự án: bao gồm distutils trong thư viện chuẩn, phân phối , distutils2 , và setuptools và có lẽ nhiều hơn nữa. Chỗ ở này có vẻ là phân phối distutils2 đã ngưng trong lợi của setuptools , mà lá hai tiêu chuẩn cạnh tranh. Để tôi sự hiểu biết setuptools cung cấp đến nay nhiều tùy chọn hơn (ví dụ như tuyên bố phụ thuộc, xét nghiệm, vv) so với distutils , Tuy nhiên nó không có trong python tiêu chuẩn library (chưa?). hướng dẫn sử dụng bao bì Python [ 1 ] khuyến cáo bây giờ:
sử dụng setuptools để xác định dự án và tạo nguồn phân phối.
và giải thích:
mặc dù bạn có thể sử dụng distutils tinh khiết cho nhiều dự án, nó không hỗ trợ xác định phụ thuộc vào các dự án khác và thiếu một số tiện ích thuận tiện cho tự động populating package siêu dữ liệu một cách chính xác được cung cấp bởi setuptools. Đang ở bên ngoài thư viện chuẩn, setuptools cũng cung cấp một tính năng phù hợp hơn thiết lập trên các phiên bản khác nhau của Python, và (không giống như > distutils), setuptools sẽ được Cập Nhật để sản xuất sắp tới "siêu dữ liệu 2.0" định dạng chuẩn trên tất cả các phiên bản được hỗ trợ. Ngay cả đối với các dự án mà chọn sử dụng distutils, khi pip cài đặt các dự án trực tiếp từ source (thay vì cài đặt từ một tệp dựng sẵn bánh xe), nó sẽ thực sự xây dựng dự án của bạn bằng cách sử dụng setuptools để thay thế.
Tuy nhiên, xem xét khác nhau của dự án setup.py tập tin tiết lộ rằng điều này dường như không phải là một tiêu chuẩn thực tế. Nhiều gói vẫn còn sử dụng distutils và những người hỗ trợ setuptools thường trộn setuptools distutils ví dụ như bằng cách làm một nhập khẩu dự phòng:
try:
    from setuptools import setup
except ImportError:
    distutils.core import setup
sau đó là một nỗ lực để tìm một cách để viết một thiết lập có thể được cài đặt bởi setuptools distutils . Điều này thường bao gồm nhiều cách khác nhau của error kiểm tra dễ bị phụ thuộc, kể từ khi distutils không hỗ trợ phụ thuộc vào chức năng thiết lập. Tại sao có những người vẫn còn làm cho nỗ lực để hỗ trợ distutils - là một thực tế rằng setuptools không phải là tiêu chuẩn library là lý do duy nhất? Ưu điểm của distutils và đang có bất kỳ hạn chế của viết setup.py các tập tin chỉ hỗ trợ setuptools .

2 Câu trả lời

0 Phiếu
Đã trả lời 04/6/2016 bởi ovg_623 (100 điểm)
Có một cái nhìn lúc này. Nó giải thích tất cả các phương pháp đóng gói rất tốt và có thể trợ giúp trả lời câu hỏi của bạn để một số phạm vi: trang web
Distutils vẫn còn là công cụ tiêu chuẩn để đóng gói bằng Python. Nó được bao gồm trong tiêu chuẩn library (Python 2 và Python 3.0-3.3). Nó là hữu ích cho việc phân phối Python đơn giản, nhưng thiếu tính năng. Nó giới thiệu distutils Python package có thể được nhập khẩu trong các kịch bản setup.py của bạn. Setuptools được phát triển để khắc phục hạn chế Distutils', và không được bao gồm trong thư viện chuẩn. Nó giới thiệu một tiện ích dòng lệnh được gọi là easy_install. Nó cũng giới thiệu setuptools Python package có thể được nhập khẩu trong script của bạn setup.py và pkg_resources Python package có thể được nhập khẩu trong code của bạn để xác định vị trí các tập tin data được cài đặt với một phân phối. Một trong số gotchas là nó khỉ-bản vá lỗi distutils Python gói. Nó sẽ làm việc tốt với pip. Phiên bản mới nhất được phát hành vào ngày 2013.
vì vậy, như bạn có thể nhìn thấy setuptools nên preffered để distutils, và tôi thấy nếu câu hỏi của bạn đến từ, Tuy nhiên tôi không nhìn thấy distutils losing hỗ trợ bất cứ lúc nào ngay sau đó, như là, đơn giản chỉ cần đặt, nó là trong nhiều trường hợp (chương trình đặc biệt là di sản) tiêu chuẩn defacto. Và như bạn đã biết cách thay đổi các loại của sự vật trong chương trình di sản có thể là khá một nỗi đau và đi kèm với khá một vài vấn đề, ví dụ như sự không tương thích, sau đó sẽ dẫn đến developer phải viết lại mã source . Do đó, đó, và cũng có một thực tế rằng distutils là một phần của tiêu chuẩn python library trong khi setuptools không. Vì vậy, nếu bạn đang tạo một chương trình python, trong ngày và tuổi tác, sử dụng setuptools, Tuy nhiên Hãy nhớ rằng không có distutils, setuptools sẽ có không bao giờ tồn tại.
0 Phiếu
Đã trả lời 04/6/2016 bởi Dume_in (960 điểm)
Có một cái nhìn lúc này. Nó giải thích tất cả các phương pháp đóng gói rất tốt và có thể trợ giúp trả lời câu hỏi của bạn để một số phạm vi: trang web
Distutils vẫn còn là công cụ tiêu chuẩn để đóng gói bằng Python. Nó được bao gồm trong tiêu chuẩn library (Python 2 và Python 3.0-3.3). Nó là hữu ích cho việc phân phối Python đơn giản, nhưng thiếu tính năng. Nó giới thiệu distutils Python package có thể được nhập khẩu trong các kịch bản setup.py của bạn. Setuptools được phát triển để khắc phục hạn chế Distutils', và không được bao gồm trong thư viện chuẩn. Nó giới thiệu một tiện ích dòng lệnh được gọi là easy_install. Nó cũng giới thiệu setuptools Python package có thể được nhập khẩu trong script của bạn setup.py và pkg_resources Python package có thể được nhập khẩu trong code của bạn để xác định vị trí các tập tin data được cài đặt với một phân phối. Một trong số gotchas là nó khỉ-bản vá lỗi distutils Python gói. Nó sẽ làm việc tốt với pip. Phiên bản mới nhất được phát hành vào ngày 2013.
vì vậy, như bạn có thể nhìn thấy setuptools nên preffered để distutils, và tôi thấy nếu câu hỏi của bạn đến từ, Tuy nhiên tôi không nhìn thấy distutils losing hỗ trợ bất cứ lúc nào ngay sau đó, như là, đơn giản chỉ cần đặt, nó là trong nhiều trường hợp (chương trình đặc biệt là di sản) tiêu chuẩn defacto. Và như bạn đã biết cách thay đổi các loại của sự vật trong chương trình di sản có thể là khá một nỗi đau và đi kèm với khá một vài vấn đề, ví dụ như sự không tương thích, sau đó sẽ dẫn đến developer phải viết lại mã source . Do đó, đó, và cũng có một thực tế rằng distutils là một phần của tiêu chuẩn python library trong khi setuptools không. Vì vậy, nếu bạn đang tạo một chương trình python, trong ngày và tuổi tác, sử dụng setuptools, Tuy nhiên Hãy nhớ rằng không có distutils, setuptools sẽ có không bao giờ tồn tại.

ToughDev Q&A là gì?

Trang web hỏi đáp cho các bạn đam mê lập trình, phát triển phần mềm và các vấn đề kỹ thuật khác. Với sự giúp đỡ của bạn, chúng tôi hy vọng sẽ xây dựng thành công một thư viện đầy đủ các câu hỏi và trả lời về tất cả các vấn đề có liên quan đến lập trình!







...