You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为自由线程版Python 3.13t编译安装wxPython遇到的问题与求助

自由线程版Python 3.13t编译安装wxPython遇到的问题与求助

我想在自由线程版Python 3.13t上使用wxPython,但目前没有可用的wheel安装包,只能尝试从源码编译安装,过程中遇到了两个问题,其中第二个问题至今没有解决,在此向各位求助。

问题1:Pip源码编译时提示依赖缺失

已解决的方案:

手动安装了wheel, setuptools, six,还有wxPython源码压缩包中\requirements\install.txt\dev.txt里列出的所有依赖包;我已经安装了Visual Studio 2019,所以不需要额外安装C++构建工具,这一步顺利解决。

问题2:核心库编译成功,但第一个扩展库(nano-svg)编译失败

问题现状:

核心库编译完成后,编译第一个扩展库nano-svg时Pip报错,目前没有找到可行的解决方案。错误根源似乎和Cython文件中的__pyx_vectorcallfunc相关,编译时的完整错误日志如下:

[1/1] Cythonizing wx/svg\_nanosvg.pyx
  running build_ext
  building 'wx.svg._nanosvg' extension
  creating build\wxsvg\temp.win-amd64-cpython-313t\Release\wx\svg
  "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DNANOSVG_IMPLEMENTATION=1 -DNANOSVGRAST_IMPLEMENTATION=1 -DNANOSVG_ALL_COLOR_KEYWORDS=1 -DPy_GIL_DISABLED=1 -Iext/nanosvg/src -ID:\Python\pyBuildTest\include "-IC:\Program Files\Python\include" "-IC:\Program Files\Python\Include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\Include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\Include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\ucrt" /Tcwx/svg\_nanosvg.c /Fobuild/wxsvg\temp.win-amd64-cpython-313t\Release\wx\svg\_nanosvg.obj
  _nanosvg.c
  ext/nanosvg/src\nanosvg.h(1450): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(1458): warning C4244: 'initializing': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(1491): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(1770): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(1791): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(2553): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(2557): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(2561): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  ext/nanosvg/src\nanosvg.h(2565): warning C4244: '=': conversion from 'double' to 'float', possible loss of data
  wx/svg\_nanosvg.c(2455): error C2146: syntax error: missing ')' before identifier 'vc'
  wx/svg\_nanosvg.c(2455): error C2081: '__pyx_vectorcallfunc': name in formal parameter list illegal
  wx/svg\_nanosvg.c(2455): error C2061: syntax error: identifier 'vc'
  wx/svg\_nanosvg.c(2455): error C2059: syntax error: ';'
  wx/svg\_nanosvg.c(2455): error C2059: syntax error: ','
  wx/svg\_nanosvg.c(2455): error C2059: syntax error: ')'
  wx/svg\_nanosvg.c(25912): error C2146: syntax error: missing ')' before identifier 'vc'
  wx/svg\_nanosvg.c(25912): error C2081: '__pyx_vectorcallfunc': name in formal parameter list illegal
  wx/svg\_nanosvg.c(25912): error C2061: syntax error: identifier 'vc'
  wx/svg\_nanosvg.c(25912): error C2059: syntax error: ';'
  wx/svg\_nanosvg.c(25912): error C2059: syntax error: ','
  wx/svg\_nanosvg.c(25912): error C2059: syntax error: ')'
  wx/svg\_nanosvg.c(25957): error C2146: syntax error: missing ')' before identifier 'vc'
  wx/svg\_nanosvg.c(25957): error C2081: '__pyx_vectorcallfunc': name in formal parameter list illegal
  wx/svg\_nanosvg.c(25957): error C2061: syntax error: identifier 'vc'
  wx/svg\_nanosvg.c(25957): error C2059: syntax error: ';'
  wx/svg\_nanosvg.c(25957): error C2059: syntax error: ','
  wx/svg\_nanosvg.c(25957): error C2059: syntax error: ')'
  wx/svg\_nanosvg.c(26646): error C2065: '__pyx_vectorcallfunc': undeclared identifier
  wx/svg\_nanosvg.c(26646): error C2146: syntax error: missing ';' before identifier 'vc'
  wx/svg\_nanosvg.c(26646): error C2065: 'vc': undeclared identifier
  wx/svg\_nanosvg.c(26646): warning C4047: '=': 'int' differs in levels of indirection from 'vectorcallfunc'
  wx/svg\_nanosvg.c(26647): error C2065: 'vc': undeclared identifier
  wx/svg\_nanosvg.c(26649): warning C4013: '__Pyx_PyVectorcall_FastCallDict' undefined; assuming extern returning int
  wx/svg\_nanosvg.c(26649): error C2065: 'vc': undeclared identifier
  wx/svg\_nanosvg.c(26649): warning C4047: 'return': 'PyObject *' differs in levels of indirection from 'int'
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX64\\x64\\cl.exe' failed with exit code 2
  Command 'D:\Python\pyBuildTest\Scripts\python.exe setup-wxsvg.py build_ext --inplace' failed with exit code 1.
  Finished command: build_others (0m2.712s)
  Finished command: build_py (7m37.163s)
  Finished command: build (12m45.794s)
  Command ""D:\Python\pyBuildTest\Scripts\python.exe" -u build.py build" failed with exit code 1.

目前的排查进展

我已经做了一些尝试,但都没有解决问题:

  • 确认__pyx_vectorcallfunc未被识别的问题,大概率和Cython与自由线程版Python 3.13t的兼容性相关
  • 发现其他项目(如scipy)的仓库中也出现过类似问题,被归因于过时的Cython版本
  • 虽然wxPython官方要求的Cython版本是3.0.10,但我先后升级到了稳定版3.0.12,甚至从Git master分支编译安装了Alpha版3.1.x,依然无法绕过__pyx_vectorcallfunc的错误

求助问题

想请教各位有经验的开发者:

  1. 有没有人成功在自由线程版Python 3.13t上从源码编译出wxPython的wheel包?
  2. 我应该优先把这个问题反馈给wxPython的开发团队/Git仓库,还是暂时等待官方的兼容性更新?
  3. 有没有其他临时的 workaround 可以让我在3.13t上成功编译并使用wxPython?

编辑:重新表述了问题内容,希望现在更清晰易懂

备注:内容来源于stack exchange,提问作者BeschBesch

火山引擎 最新活动