Щоб відповісти на запитання у вашій назві, але не в конкретному випадку, який ви вказали, це цілком правильно, тонни пакетів це роблять. Напевно, краще самостійно з'ясувати ОС, а не покладатися на користувача; ось pySerial це робить як приклад.
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
)
)
Це слід використовувати лише в тих випадках, коли ви припускаєте, що вам потрібна чітка гарантія, що певні інтерфейси / функції будуть наявні: наприклад, "файл", який називається /dev/ttyX. У вашому випадку: маючи справу з JSON, насправді немає нічого, що стосується ОС, і ви лише перевіряєте, чи існує пакет чи ні. У такому випадку просто tryімпортувати його, і відновлювати, exceptякщо він не вдається:
try:
import some_specific_json_module as json
except ImportError:
import json
platform.platform()абоplatform.system()робити все, що вам потрібно, а не користувачеві доводиться щось вводити щоразу при запуску коду.