インストール時のオプション パッケージ。
私はあなたがあなたの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