Чтобы ответить на вопрос в названии, но не в конкретном случае, который вы предоставляете, это совершенно правильно, тонны пакетов делают это. Вероятно, лучше выяснить ОС самостоятельно, чем полагаться на пользователя; Вот 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()следует делать то, что вам нужно, вместо того, чтобы пользователь должен был что-то вводить при каждом запуске кода.