尝试将win32ui与pywin32一起使用给出:动态链接库(DLL)初始化例程失败



我正在尝试使用pywin32中的win32ui模块(是的,我有正确的版本(。我的win32gui模块工作正常,但是ui模块给了我一个错误。我已经尝试过:重新安装python,添加PYTHON_ PATH太多系统变量,运行安装后pywin32脚本,剩下的我有点力不从心。

Python版本:3.9(64位(Pywin32版本:Pywin32-228.win-ad64-py3.9(是.exe文件名,我不知道如何找到版本(只是为了清理我唯一的代码是:

import win32ui

(这是我的第一个问题,所以我希望我做得对(

更新

对原始源应用(以下(修复程序(以及更多修复程序(,构建它们,并将.whl上传到[GitHub]:CristiFati/Prebuilded Binaries-(master(Prebuilded Binarys/PyWin32/v228
但是,由于这个bug是一种"交易破坏者;(自v228发布以来,4+个月(,我预计v229很快就会发布(在接下来的几天左右(。

有关如何安装.whls的详细信息,请查看[SO]:PyWin32和Python 3.8.0(@CristiFati的答案(的安装步骤部分。



它在上不断重复

  • Python 3.9 64位32位

  • PyWin32 228(及更早版本(

[cfati@CFATI-5510-0:e:WorkDevGitHubCristiFatipywin32src]> sopr.bat
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###
[prompt]> "e:WorkDevVEnvspy_pc064_03.09.00_test0Scriptspython.exe"
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import win32ui
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:Installpc064PythonPython3.09.00Libctypes__init__.py", line 374, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 1114] A dynamic link library (DLL) initialization routine failed
>>> import win32api
做了一些调试(为win32ui创建了一个VStudio2015解决方案(有两个项目:用于Python 3.9Python3.8(,结果发现这是访问违规(segfault
;最好的";部分原因是它发生在DllMain之前。

最后一行是[GitHub]:mhammond/pywin32-(b228(pywin32/Pythonwin/win32RichEdit.cpp#225:

PyCCtrlView_Type PyCRichEditView::type("PyCRichEditView", &PyCCtrlView::type, &PyCRichEditCtrl::type,
RUNTIME_CLASS(CRichEditView), sizeof(PyCRichEditView),
PYOBJ_OFFSET(PyCRichEditView), PyCRichEditView_methods,
GET_PY_CTOR(PyCRichEditView));

这是一个静态成员。由于2nd和3rd参数也是静态成员(没有注意到它们是指针的事实(,我认为这是[ISOCPP]:什么是"静态初始化顺序‘惨败’(问题("?,我还追了一些鬼。

无论如何,今天我注意到[GitHub]:mhammond/pywin32-确保我们在win32ui初始化并调用回Python时保留GIL(然后[GitHub]:mhammond/pywin32-导入它正在寻址的Python 3.9上损坏的win32ui(。

应用补丁,修复问题:

[prompt]> "e:WorkDevVEnvspy_pc064_03.09.00_test0Scriptspython.exe"
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import win32ui
>>> import win32api

相关内容

最新更新