Windows扩展的Python
项目描述
pywin32
这是Python for Win32 (pywin32) 扩展的readme,它提供了从Python访问许多Windows API的能力。
请参阅CHANGES.txt以了解最近的重大更改。
文档
文档是一个漫长而悲伤的故事,但现在 有一个在线版本 的帮助文件,该文件随安装程序一起提供(感谢 @ofek!)。其中很多都是非常旧的,但一些是自动生成的且是当前的。希望有人能帮助整理文档!
支持
请随意提出问题,包括pywin32中所有错误(或疑似错误)。对于所有错误或新功能,也欢迎发起拉取请求。
但是,请不要在github上提出python-win32邮件列表的通用支持请求,或者使用此包中模块的问题或疑问 - 这些问题将被关闭。对于此类问题,请通过电子邮件提出 - 注意,您必须在发布前订阅该列表。
二进制文件
版本306是最后一个带有.exe安装程序的版本。您真的不应该使用它们,但如果您真的需要,可以在这里找到它们
通过pip安装
您应该通过pip安装pywin32 - 例如,
python -m pip install --upgrade pywin32
有一个安装后脚本(见下文),不应该在虚拟环境中运行;它只能在“全局”安装中运行。
对于未发布的变化,您可以下载由github actions制作的构建 - 从main
分支中选择任何“工作流程”并下载其“工件”)
全局安装
在虚拟环境之外,您可能想要安装COM对象、服务等。您可以通过执行以下操作来完成此操作
python Scripts/pywin32_postinstall.py -install
从您的Python安装的根目录。
如果您以常规权限执行此操作,它将对您的用户全局(一些文件将被复制到Python安装的根目录,并对HKCU进行一些更改)。如果您以提升的进程执行此操作,它将对机器全局(文件将被复制到System32,HKLM将被更改等)
作为Windows服务运行
要作为服务运行,您可能需要从提升的命令提示符中全局安装pywin32 - 见上文。
您还需要确保Python安装在一个用户可以访问安装并加载pywintypesXX.dll
和pythonXX.dll
的位置。特别是,LocalSystem
帐户通常无法访问您的本地%USER%
目录结构。
故障排除
如果在升级时遇到以下问题
The specified procedure could not be found
Entry-point not found
通常意味着以下两点之一
-
您已升级了一个已运行安装后脚本的安装。因此,您应该再次运行它
python Scripts/pywin32_postinstall.py -install
这将尝试清理旧版本冲突的安装。
-
系统中有其他pywin32 DLL,但位置与新的不同。这在带有预装pywin32的环境中有时会发生(例如,anaconda?)。
这里的可能解决方案包括
- 运行上面文档化的“post_install”脚本。
- 否则,找到并删除所有其他
pywintypesXX.dll
和pythoncomXX.dll
的副本(其中XX
是Python版本 - 例如,“39”)
从源代码构建
安装Visual Studio 2019(稍后可能也可以工作,但选项可能不同),遵循构建环境中的说明进行安装的版本。
(免费编译器可能也可以工作,但尚未经过测试 - 让我知道您的体验!)
setup.py
是一个标准的distutils构建脚本,所以您可能想要
python setup.py install
或
python setup.py --help
某些模块需要神秘的SDK才能构建 - setup.py
应该成功,优雅地告诉您为什么无法构建它们 - 如果配置确实导致构建失败,请提出问题。
发布过程
在制作新版本时执行以下步骤 - 这主要是为了形成一个清单,这样@mhammond就不会忘记要做什么:)
从构建307开始,发布过程基于由Github actions创建的工件。
-
确保 CHANGES.txt 包含所有值得注意的更改。更新标题以反映即将发布的构建和日期,并提交更改。
-
更新 setup.py 中的新构建号。更新 CHANGES.txt 以包含下一个未发布版本的新的标题部分。(例如,一个新的空“将在构建 XXX 中出现,尚未发布”部分)
-
将这些更改推送到 github,等待操作完成,然后下载那次运行生成的工件。
-
将 .whl 工件上传到 pypi - 我们在推送标签之前这样做,因为它们可能会因为无效的
README.md
被拒绝。通过py -3.? -m twine upload dist/*XXX*.whl
完成。 -
为发布创建一个新的 git 标签。
-
更新 setup.py 中的新构建号 + ".1"(例如,123.1),以确保未来的测试构建不会被误认为是真实发布。
-
确保一切都被推送到 github,包括标签(即,
git push --tags
) -
向 python-win32 发送邮件
较旧的发布流程
这是在本地开发环境用于创建构建时使用的旧流程。306 次构建是使用此流程发布的最后一次。
-
确保 CHANGES.txt 包含所有值得注意的更改。更新标题以反映即将发布的构建和日期,并提交更改。
-
更新 setup.py 中的新构建号。
-
执行
make.bat
,等待无限期,测试工件。 -
将 .whl 工件上传到 pypi - 我们在推送标签之前这样做,因为它们可能会因为无效的
README.md
被拒绝。通过py -3.? -m twine upload dist/*XXX*.whl
完成。 -
提交 setup.py(以便新的构建号在存储库中),创建一个新的 git 标签
-
将 .exe 安装程序上传到 github。
-
更新 setup.py 中的新构建号 + ".1"(例如,123.1),以确保未来的测试构建不会被误认为是真实发布。
-
确保一切都被推送到 github,包括标签(即,
git push --tags
) -
向 python-win32 发送邮件
项目详细信息
下载文件
下载适用于您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分发
构建分发
pywin32-307-cp313-cp313-win_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b30c9bdbffda6a260beb2919f918daced23d32c79109412c2085cbc513338a0a |
|
MD5 | 0bf5b3da551cbae18075f02079326de5 |
|
BLAKE2b-256 | 089b3c797468a96f68ce86f84917c198f60fc4189ab2ddc5841bcd71ead7680f |
pywin32-307-cp313-cp313-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 576d09813eaf4c8168d0bfd66fb7cb3b15a61041cf41598c2db4a4583bf832d2 |
|
MD5 | d018602c4d16a3d8b7ad18ec8f166ceb |
|
BLAKE2b-256 | fd59b891cf47d5893ee87e09686e736a84b80a8c5112a1a80e37363ab8801f54 |
pywin32-307-cp313-cp313-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea4d56e48dc1ab2aa0a5e3c0741ad6e926529510516db7a3b6981a1ae74405e5 |
|
MD5 | 044cb11f05b78fe4137c272942ea3205 |
|
BLAKE2b-256 | 61c2bdff07ee75b9c0a0f87cd52bfb45152e40d4c6f99e7256336e243cf4da2d |
pywin32-307-cp312-cp312-win_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b53658acbfc6a8241d72cc09e9d1d666be4e6c99376bc59e26cdb6223c4554d2 |
|
MD5 | e17e6fced40519dcf7e0ae38a04ad9e9 |
|
BLAKE2b-256 | cd6453b1112cb05f85a6c87339a9f90a3b82d67ecb46f16b45abaac3bf4dee2b |
pywin32-307-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 00d047992bb5dcf79f8b9b7c81f72e0130f9fe4b22df613f755ab1cc021d8347 |
|
MD5 | b18e9636dfc34182f41bb424dfc383db |
|
BLAKE2b-256 | 9c11c56e771d2cdbd2dac8e656edb2c814e4b2239da2c9028aa7265cdfff8aed |
pywin32-307-cp312-cp312-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07649ec6b01712f36debf39fc94f3d696a46579e852f60157a729ac039df0815 |
|
MD5 | 7bd2d811ea9c10d9d2c0f8cf9975dbf5 |
|
BLAKE2b-256 | 904e9c660fa6c34db3c9542c9682b0ccd9edd63a6a4cb6ac4d22014b2c3355c9 |
pywin32-307-cp311-cp311-win_arm64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fd436897c186a2e693cd0437386ed79f989f4d13d6f353f8787ecbb0ae719398 |
|
MD5 | 410b4cc756785647dee149cdc063eadf |
|
BLAKE2b-256 | 6372dce6d08a2adeaf9e7e0462173610900d01d16a449aa74c9e035b7c2ec8f8 |
pywin32-307-cp311-cp311-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 987a86971753ed7fdd52a7fb5747aba955b2c7fbbc3d8b76ec850358c1cc28c3 |
|
MD5 | 86402e5e69725b56c7c05bd767f4af43 |
|
BLAKE2b-256 | 5e8ddd2bf7e5dbfed3ea17b07763bc13d007583ef48914ed446be1c329c8e601 |
pywin32-307-cp311-cp311-win32.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fec5d27cc893178fab299de911b8e4d12c5954e1baf83e8a664311e56a272b75 |
|
MD5 | e15fa5f94db842cc075ef694cfab8ecd |
|
BLAKE2b-256 | f9295f50cb02aef57711bf941e1d93bfe602625f89faf33abb737441ab698496 |