インストール時のオプション パッケージ。
私はあなたがあなたのsetup.pyスクリプトについて話していると仮定しています。次のように変更できます。
# mypackage/setup.py
extras = {
'with_simplejson': ['simplejson>=3.5.3']
}
setup(
...
extras_require=extras,
...)
次に、次のいずれかを実行できます。
pip install mypackage、
pip install mypackage[with_simplejson]
後者のインストールでsimplejson>=3.5.3。
すべてをインストールして既知の適切なバージョンにフォールバックしようとする代わりに、動作することがわかっているパッケージのサブセットをインストールすることをお勧めします。
実行時のオプション パッケージ。
インストールできるパッケージの 2 つの異なるセットを取得したら、それらが利用可能であれば、それらを使用できることを確認する必要があります。たとえば、jsonインポートの場合:
try:
# helpful comment saying this should be faster.
import simplejson as json
except ImportError:
import json
別のより複雑な例:
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
しかし、いくつかのパッケージでこのパターンを見つけることもできます:
try:
optional_package = None
import optional.package as optional_package
except ImportError:
pass
...
if optional_package:
# do addtional behavior