インストール時のオプションパッケージ。
私はあなたの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つ異なる場合は、 が必要です(使用可能な場合)。例えば。
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
オプションパッケージはに失敗した場合ことを意味するあなたの
json
輸入のためにインストールすると、インストールが妨げられずに完了できます。 –さて、もしあなたが*パッケージに依存していないのであれば、どうして*必須のパッケージ*に入れるのですか?私は単にポイントを取得しません。 – Constantinius
私はそれを 'required'リストに入れたくありません。それは私が求めていることです - 別のオプションがありますので、もしそれが含まれていればそれを含めることができますが、もしそうでなければ無視しますか? –