Python 3.8.0 最近已发布(在 20191014上 ,可以从[Python]:Python 3.8.0下载)。 PyWin32 已在[PyPI]:pywin32 225(于 20190915 发行)上 为其构建 。不幸的是,pip installing后,它不起作用。
pip install
样品:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058631512]> sopr.bat *** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages *** [prompt]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. >>> import win32api >>> ^Z [prompt]> "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe" Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64 bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. >>> import win32api Traceback (most recent call last): File ““, line 1, in ImportError: DLL load failed while importing win32api: The specified module could not be found. >>> ^Z
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058631512]> sopr.bat *** Set shorter prompt to better fit when pasted in StackOverflow (or
other) pages ***
[prompt]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64
bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. >>> import win32api >>> ^Z
[prompt]> "e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe" Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC v.1916 64
bit (AMD64)] on win32 Type “help”, “copyright”, “credits” or “license” for more information. >>> import win32api Traceback (most recent call last): File ““, line 1, in ImportError: DLL load failed while importing win32api: The specified module could not be found. >>> ^Z
注意事项 :
应用 _ #2.2。 (从下面)到原始 .whl_ ,然后将它们发布在 [GitHub]上:CristiFati / Prebuilt- Binaries-(主)Prebuilt-Binaries / PyWin32 / v225 ( win_amd64 ,适用于 Python 3.8的 win32 )。 __
安装它们(其中之一)之后,现有代码应可以在 OOTB上运行 (就此问题而言)。
安装步骤 :
下载与您的 Python 架构( 64位 , 32位 -匹配的 .whl -有关获取 Python 架构的更多详细信息。
在其上调用 PIP 安装程序([[SO]:如何在Windows 10上为特定的Python版本安装软件包)。就像是:
(${path_to_your})python.exe -m pip ${path_to_the_downloaded_pywin32_whl}
例:
"e:\Work\Dev\VEnvs\py_pc064_03.08.00_test0\Scripts\python.exe" -m pip "L:\Downloads\pywin32-225-cp38-cp38-win_amd64.whl"
该问题已在[GitHub]上报告:mhammond / pywin32-python 3.8。
上面的 URL 引用了另外2个:
* **[](https://docs.python.org/3.8/library/ctypes.html#module- ctypes)现在可以更安全地解决 Windows 上 扩展模块的DLL依赖关系以及 ctypes 加载的DLL的依赖性 。仅搜索系统路径,包含DLL或PYD文件的目录以及使用add_dll_directory()添加的目录以查找加载时间相关性。 具体来说,将不再使用PATH和当前工作目录,并且对它们的修改将不再对正常的DLL解析产生任何影响。**
* **[](https://docs.python.org/3.8/library/ctypes.html#module-
ctypes)现在可以更安全地解决 Windows 上 扩展模块的DLL依赖关系以及 ctypes 加载的DLL的依赖性 。仅搜索系统路径,包含DLL或PYD文件的目录以及使用add_dll_directory()添加的目录以查找加载时间相关性。 具体来说,将不再使用PATH和当前工作目录,并且对它们的修改将不再对正常的DLL解析产生任何影响。**
在解析导入的扩展模块 (模块本身通过解析sys.path) 以及 ctypes的 依赖项时, 将使用此搜索路径。
sys.path
同时,我做了一些自己的挖掘工作,发现(对于 win32api.pyd ) 找不到pywintypes38.dll (是 .pyd 的依赖 项 )(我也在注释中指定了此内容)问题)。
解决方案 (实际上的解决方法(或多或少),直到发布了官方的和向后兼容的修复程序为止):
import pywintypes
import win32api
如果使用 COM ,则需要import pythoncom
import pythoncom
将 pywin32_system32 添加到 .dll 搜索路径中(从上面遵循新模型)。有多种方法:
__来自问题 URL的 v-python 的注释,提供了一个小片段(我没有对其进行测试)
我还提交了 [GitHub]:mhammond / pywin32-支持Python 3.8 ,我在 pywin32.pth 文件中执行所有操作(在解释器启动时“执行”,因此无需更改现有代码)。不幸的是, AppVeyor 自动化测试存在一个问题,该问题失败了(但由于其他一些原因),因此它已经停留了一段时间。请注意,与此同时, 关闭 了 PR ,并推出了另一种(类似的)方法。请注意,包含此修复程序的 v226 (于 20191110 发行)在 VirtualEnv ([[SO]:PyWin32(226)和虚拟环境上不起作用 无论如何,在本地应用更改 _ (1) (在我的两个 _Python VirtualEnv上 )都解决了该问题(在一个方面,而没有破坏另一个):
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058631512]> sopr.bat Set shorter prompt to better fit when pasted in StackOverflow (or other) pages [prompt]> “e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe” -c “import win32api” [prompt]> “e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe” -c “import win32api” [prompt]>
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058631512]> sopr.bat Set shorter prompt to better fit when pasted in StackOverflow (or other) pages
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q058631512]>
sopr.bat Set shorter prompt to better fit when pasted in StackOverflow (or other) pages
[prompt]>
“e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe” -c “import win32api”
“e:\Work\Dev\VEnvs\py_064_03.08.00_test0\Scripts\python.exe” -c “import win32api”
3. 其他方法,例如复制 _.dll_ (例如,在 _%SystemRoot%\ System32中_ )或将它们 _符号链接_ ,但是(个人)我不推荐使用
[PyPI]:pywin32 227 (解决了此问题),已于 20191114 发布!