Para responder la pregunta en su título, pero no el caso particular que proporciona, es perfectamente correcto, toneladas de paquetes hacen esto. Probablemente sea mejor averiguar el sistema operativo usted mismo en lugar de confiar en el usuario; Aquí está PySerial haciéndolo como ejemplo.
serial/__init__.py
import sys
if sys.platform == 'cli':
from serial.serialcli import Serial
else:
import os
# chose an implementation, depending on os
if os.name == 'nt': # sys.platform == 'win32':
from serial.serialwin32 import Serial
elif os.name == 'posix':
from serial.serialposix import Serial, PosixPollSerial, VTIMESerial # noqa
elif os.name == 'java':
from serial.serialjava import Serial
else:
raise ImportError(
"Sorry: no implementation for your platform ('{}') available".format(
os.name
)
)
Esto solo debe usarse en casos en los que está asumiendo y necesita una garantía sólida de que ciertas interfaces / características estarán allí: por ejemplo, un 'archivo' llamado /dev/ttyX. En su caso: al tratar con JSON, no hay nada que sea realmente específico del sistema operativo y solo está verificando si el paquete existe o no. En ese caso, solo trypara importarlo, y recurrir con un exceptsi falla:
try:
import some_specific_json_module as json
except ImportError:
import json
platform.platform()oplatform.system()debe hacer lo que necesita, en lugar de que un usuario tenga que ingresar algo cada vez que se ejecuta el código.