Модуль 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 exceptionwarningsмодуль , чтобы сообщить пользователю, что некоторые функции/функции недоступны.
В качестве альтернативы можно использовать
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').)