paquetes opcionales en el momento de la instalación.
Supongo que está hablando de su secuencia de comandos setup.py
. Se podría cambiarlo a tener:
# mypackage/setup.py
extras = {
'with_simplejson': ['simplejson>=3.5.3']
}
setup(
...
extras_require=extras,
...)
entonces usted puede hacer cualquiera de:
pip install mypackage
,
pip install mypackage[with_simplejson]
con esta última instalación simplejson>=3.5.3
.
En lugar de intentar instalar todo y recurrir a una buena versión conocida, , le conviene instalar el subconjunto de paquetes que sabe que funcionan.
paquetes opcionales en tiempo de ejecución.
Una vez que tiene dos conjuntos diferentes de paquetes que se pueden instalar, necesita para asegurarse de que pueda usarlos si están disponibles. P.ej. para su json
importación:
try:
# helpful comment saying this should be faster.
import simplejson as json
except ImportError:
import json
Otro ejemplo más complejo:
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
Pero también se puede encontrar este patrón en algunos paquetes:
try:
optional_package = None
import optional.package as optional_package
except ImportError:
pass
...
if optional_package:
# do addtional behavior
opcional que significaría que si el paquete no logra instalar, la instalación puede completarse sin obstáculos. –
De acuerdo, pero si no * confía vitalmente * en un paquete, ¿por qué ponerlo en los * paquetes obligatorios * de todos modos? Simplemente no entiendo el punto. – Constantinius
No quiero ponerlo en la lista 'required'; eso es lo que estoy preguntando: ¿hay alguna otra opción para que pueda incluirse si está disponible, pero se ignora si no? –