我正在编写一些在多个平台下运行的 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 的函数也会失败。确保某些代码未根据平台加载/导入并在它们被接口(interface)的客户端调用时给出错误消息/异常的标准方法是什么?
最佳答案
try:
from pythoncom import PumpWaitingMessages
from pythoncom import Empty
from pythoncom import Missing
from pythoncom import com_error
import win32api
except ImportError:
# handle exception
出现异常时怎么办,由你决定。您可以添加提供类似界面的特定于 Linux 的代码,或者您可以使用 warnings
module告诉用户某些功能/特性不可用。
或者,您可以根据 sys.platform
的值使用 if 语句
:
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'
) 或 platform.architecture (这可能等于 ('32bit', 'ELF')
。)
关于Linux 上的 Python 模块 win32com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927131/