gói tùy chọn tại thời điểm cài đặt.
Tôi giả định bạn đang nói về tập lệnh setup.py
của mình. Bạn có thể thay đổi nó để có:
# mypackage/setup.py
extras = {
'with_simplejson': ['simplejson>=3.5.3']
}
setup(
...
extras_require=extras,
...)
sau đó bạn có thể làm một trong hai:
pip install mypackage
,
pip install mypackage[with_simplejson]
với sau này cài đặt simplejson>=3.5.3
.
Thay vì cố cài đặt mọi thứ và dự phòng cho một phiên bản đã biết, bạn sẽ muốn cài đặt tập hợp con các gói bạn biết làm việc.
gói tùy chọn vào thời gian thực hiện.
Khi bạn có hai bộ gói khác nhau có thể được cài đặt, bạn cần để đảm bảo bạn có thể sử dụng chúng nếu chúng có sẵn. Ví dụ. cho json
nhập khẩu của bạn:
try:
# helpful comment saying this should be faster.
import simplejson as json
except ImportError:
import json
Một ví dụ khác phức tạp hơn:
try:
# xml is dangerous
from defusedxml.cElementTree import parse
except ImportError:
try:
# cElementTree is not available in older python
from xml.cElementTree import parse
except ImportError:
from xml.ElementTree import parse
Nhưng bạn cũng có thể tìm thấy mô hình này trong một số gói:
try:
optional_package = None
import optional.package as optional_package
except ImportError:
pass
...
if optional_package:
# do addtional behavior
Tùy chọn có nghĩa là nếu gói không cài đặt, cài đặt có thể hoàn thành không bị cản trở. –
Được rồi, nhưng nếu bạn không * vitaly dựa vào một gói, tại sao lại đặt nó trong các gói * bắt buộc *? Tôi chỉ đơn giản là không nhận được điểm. – Constantinius
Tôi không muốn đặt nó vào danh sách 'yêu cầu'; đó là những gì tôi đang hỏi - liệu có một tùy chọn khác để tôi có thể đưa nó vào nếu có, nhưng bỏ qua nếu không? –