Linux 上的 Python 模块 win32com

标签 python python-import multiplatform

我正在编写一些在多个平台下运行的 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..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 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/

相关文章:

python - 我能对 "ImportError: Cannot import name X"或 "AttributeError: ... (most likely due to a circular import)"做些什么?

c - 如何将SSE与Windows编译器和GCC编译器一起使用?

javascript - Webview webapp 广告,如何做到一次正确,跨平台搞定?

Python unittest mock ...模拟一个模块语句

Python Pandas 数据框 : Normalize data between 0. 01 和 0.99?

python - 导入警告 : Not Importing Directory issues using wxPython, 不知道如何修复

python - 避免在 Django 中循环导入

python - 使用 etree 在 xml 中查找节点值

python - 如何在wx.Python中正确使用wx.CallLater

build - 哪种构建系统对跨平台驱动程序、库和 GUI 构建的支持最好?