Python 模块 win32com 在 Linux 上的应用

4

我正在编写一些可以在多个平台上运行的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个回答

5

使用try..except ImportError来处理:

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模块告知用户某些功能不可用。


或者,您可以根据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')之类的东西)。


2
这解决了导入的问题,但是使用这些导入的函数仍然会失败,不是吗? - BlueTrin
2
应将与Windows相关的函数放置在“try-suite”中,而与Linux相关的类似函数则应放置在“except-suite”中。 - unutbu
谢谢,太棒了,我会尽快尝试的。 - BlueTrin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接