Модуль Python win32com на Linux
Я пишу некоторый код Python, который работает под несколькими платформами. К сожалению, под Win32, я должен поддерживать некоторые функции COM.
Однако эти строки не будут работать в среде Linux:
from pythoncom import PumpWaitingMessages
from pythoncom import Empty
from pythoncom import Missing
from pythoncom import com_error
import win32api
И все другие функции, использующие Win32 COM API, также не будут работать. Каков стандартный метод, чтобы убедиться, что некоторый код не загружается / импортируется в зависимости от платформы и выдавать сообщение об ошибке / исключение в случае, если они вызваны клиентом из интерфейса ?
1 ответ:
Используйте a
try..except ImportError
:Что делать, когда есть исключение, зависит от вас. Вы можете добавить специфичный для Linux код, который предоставляет аналогичный интерфейс, или вы можете использоватьtry: from pythoncom import PumpWaitingMessages from pythoncom import Empty from pythoncom import Missing from pythoncom import com_error import win32api except ImportError: # handle exception
warnings
модуль , чтобы сообщить пользователю, что некоторые функции/функции недоступны.
В качестве альтернативы можно использовать
if-statement
, основанный на значенииsys.platform
:import sys if sys.platform == "win32": ... elif sys.platform == 'cygwin': ... elif sys.platform[:5] == 'linux': ... elif sys.platform == 'darwin': ... else: ...
Другими значениями, которые могут быть важны для кроссплатформенного кода, могут быть os.name (который мог бы равный
'posix'
,'nt'
,'os2'
,'ce'
,'java'
,'riscos'
), или платформа .архитектура (которая могла бы равняться таким вещам, как('32bit', 'ELF')
.)