纯Python COM包
项目描述
comtypes
comtypes
是一个轻量级的纯Python COM 包,基于 ctypes
外部函数接口库。
comtypes
允许您在纯Python中定义、调用和实现基于COM接口的自定义和派生的接口。
comtypes
需要 Windows 和 Python 3.8 或更高版本。
- 版本 1.4.6 是最后一个支持 Python 3.7 的版本。
- 版本 1.2.1 是最后一个支持 Python 2.7 和 3.3–3.6 的版本。
comtypes
在 Python 3.8.1 中无法正常工作,如 GH-202 中所述。该错误已在 Python >= 3.8.2 中修复。- 某些
comtypes
函数在 Python 3.8 和 3.9 中可能无法正常工作,如 GH-212 中所述。该错误已在 Python >= 3.10.10 和 >= 3.11.2 中修复。
安装
comtypes
可在 PyPI 上找到,并且可以使用 pip
进行安装
# PyPI
pip install comtypes
源代码目前托管在 此处 的 GitHub 上。
依赖项
comtypes
是一个纯Python包 — 它没有其他必需的依赖项。
可以通过安装
numpy
来启用可选功能,以便将数组作为numpy
的ndarray
处理。mypy
或其他静态类型检查器,以解释类型提示。
然而,这些包中的任何一个都不是运行 comtypes
所必需的。
社区
GitHub 存储库 用于跟踪问题、报告错误以及为代码库和文档做出贡献。
对于企业
作为 Tidelift 订阅的一部分提供。
该项目以及成千上万个其他包的维护者正在与 Tidelift 合作,提供一项企业订阅,该订阅涵盖了您使用的所有开源软件。
常见问题解答
Q: 为什么这个包不支持除Windows之外的平台?
A: Microsoft Component Object Model (COM) 是一种仅在 Windows 上独特的技术,不支持其他平台。
MS 文档中的“COM 是平台无关的”这句话 意味着 COM 在不同的 Windows 版本之间保持兼容性,并不表示它在 Linux 或 Mac 上得到支持。
只要 COM 在 Windows 之外不受支持,就没有计划将 comtypes
移植到其他平台。
Q: 为什么在除Windows之外的平台使用此包时会出现 cannot import name 'COMError' from '_ctypes'
错误?
A: _ctypes
是标准库 ctypes
的内部实现的一部分,该标准库存在于所有平台的 Python 中。然而,COMError
和与 COM 相关的功能仅在 Windows 的 Python 中实现。
在跨平台软件开发中,必须注意确保依赖于 comtypes
的代码库不要在除 Windows 之外的环境中执行。
问:尽管一个依赖于 comtypes
的脚本之前运行成功过,但现在抛出了错误(ImportError
、NameError
或 SyntaxError
),并且错误反复出现。
答:执行 py -m comtypes.clear_cache
然后再次运行脚本可能会解决问题。
当调用 comtypes.client.GetModule
(无论是直接还是间接)时,comtypes
会生成 Python 模块文件。
如果 Python 在文件生成过程中被强制终止或崩溃,写入文件中的代码库将是不完整的。
当 Python 尝试导入这个不可执行的代码库模块时,将发生错误。
执行 py -m comtypes.clear_cache
会识别存储“缓存模块文件”的目录并删除它们。
删除这些不完整的模块并再次运行脚本后,comtypes.client.GetModule
被调用,并重新生成可执行模块。
然而,如果脚本实现没有使用 comtypes.client.GetModule
或处理生成的文件,这可能不是解决方案。
文档
文档目前托管在 PythonHosted 的这里。
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分布
构建分布
comtypes-1.4.7.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc4f3cd5db28c6a0c9fce781720192c60b2f198e548fd6dfcfc1d47b6f8ea20f |
|
MD5 | cd611d6d9ea5e1492f54189be01b6ae2 |
|
BLAKE2b-256 | 5255f2122be04a51f2c90764d37b83d420a8abc263ab81b2557f142324160b3a |