Blu*_*rin 4 python multiplatform python-import
我正在编写一些在多个平台下运行的 Python 代码。不幸的是在Win32下,我必须支持一些COM功能。
然而,这些行在 Linux 环境下会失败:
from pythoncom import PumpWaitingMessages
from pythoncom import Empty
from pythoncom import Missing
from pythoncom import com_error
import win32api
Run Code Online (Sandbox Code Playgroud)
所有其他使用 Win32 COM API 的函数也将失败。确保某些代码未根据平台加载/导入并在接口的客户端调用它们时给出错误消息/异常的标准方法是什么?
try:
from pythoncom import PumpWaitingMessages
from pythoncom import Empty
from pythoncom import Missing
from pythoncom import com_error
import win32api
except ImportError:
# handle exception
Run Code Online (Sandbox Code Playgroud)
出现异常时该怎么办取决于您。您可以添加提供类似接口的 Linux 特定代码,或者您可以使用该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:
...
Run Code Online (Sandbox Code Playgroud)
对于跨平台代码可能很重要的其他值可能是os.name(可能等于'posix', 'nt', 'os2', 'ce', 'java', 'riscos')或platform.architecture(可能等于('32bit', 'ELF').)