【问题标题】:Python module win32com on LinuxLinux 上的 Python 模块 win32com
【发布时间】:2014-01-04 21:44:29
【问题描述】:

我正在编写一些在多个平台下运行的 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 的函数也会失败。确保根据平台不加载/导入某些代码并在接口的客户端调用它们的情况下给出错误消息/异常的标准方法是什么?

【问题讨论】:

    标签: python python-import multiplatform


    【解决方案1】:

    使用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-statement

    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')或@ 987654324@(可能等于('32bit', 'ELF')。)

    【讨论】:

    • 这样解决了导入,但是使用导入的函数还是会失败,不是吗?
    • Windows 特定的函数应该放在try-suite 中。 Linux 特定的类似函数应放在except-suite
    • 谢谢,太好了,我会尽快试试这个。
    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 2018-09-08
    • 2020-10-15
    • 2021-03-06
    • 1970-01-01
    • 2021-08-09
    • 2011-08-13
    • 2022-10-13
    相关资源
    最近更新 更多