Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

项目中用到的tkinter(tcl和tk)可否更新到兼容9.0大版本,目前项目需要的是8.6大版本 #91

Open
hyrulelinks opened this issue Nov 17, 2024 · 8 comments

Comments

@hyrulelinks
Copy link
Contributor

hyrulelinks commented Nov 17, 2024

测试了最新的项目源码,发现一个很别扭的问题

如果是Python 3.12大版本早期,通过brew install [email protected]和brew install [email protected],自带的tcl和tk是8.6的,项目可以正常运行

但现在Python 3.12的最后一个版本是3.12.7,大版本已经到3.13.0,现在再用brew install [email protected]和brew install [email protected]安装python 3.12.7(强制3.12的最后一个小版本),或者brew install python、brew install python-tk安装python 3.13.0,自带的tcl和tk是9.0的,最后一个8.6小版本是8.6.14,之后直接升到9.0大版本,中间没有8.7、8.8、8.9只写过渡版本,又无法通过brew install的方式安装早期的python 3.12.0等自带tcl、tk为8.6的版本,因此用项目中的shell脚本自动构建的mac应用是绝无可能正常运行的

解决办法两个,一是把项目中的tkinter相关代码更新到兼容9.0版本,二是降级到python 3.11(3.10不行,因为tcl和tk是8.5的,也无法运行项目),但mac上降级到3.11也是个很麻烦的问题,用brew install [email protected][email protected]也会自动使用tcl-tk 9.0的版本,需要手动设置环境变量强制使用tcl-tk@8这个库,过程有点复杂,而且对mac整个环境变量影响较大

通过比较复杂的操作,最终将最新代码重新打包mac应用,可以再m4 mac mini上正常运行

截屏2024-11-18 02 02 56

希望项目作者能更新项目以兼容最新的tkinter(tcl、tk 9.0),感谢!
@TransparentLC

@hyrulelinks
Copy link
Contributor Author

这个问题的发生,我觉得是3.12大版本自己内部的问题,早期小版本和后期小版本之间竟然是不兼容的,不光是tkinter的前后期不兼容,其他标准库也有一些变动,3.12我认为是个很失败的大版本了,不知道3.13能不能好一点

@hyrulelinks
Copy link
Contributor Author

或者不用标准库的tkinter,改用其他第三方库来实现等效替换,摆脱对tkinter的依赖,第三方库的版本控制就比tkinter方便多了

@TransparentLC
Copy link
Owner

搜索了一下相关信息,感觉这都是上游问题……

Homebrew 的问题是 python-tk 的依赖写的是 tcl-tk 而不是 tcl-tk@8。

Python 3.13 目前还没准备好兼容 tk 9.0,相关的 PR 最近才 merge 到当前开发的 3.14 的 branch 上,移植到 3.13 及之前的版本还需要时间。

官方的 Python 二进制版本捆绑了 Tcl/Tk 8.6 多线程版本。

现在 Python 文档对 tkinter 模块的介绍还是这么写的,Windows 版 3.13 附带的也是 8.6,等 3.13 增加对 tk 9.0 的支持了以及附带的也变成 9.0 了我才能考虑怎么修复可能还存在的兼容问题。

@hyrulelinks
Copy link
Contributor Author

hyrulelinks commented Nov 18, 2024

好的,感谢解答

另外,能否帮忙把https://github.com/the-database/MangaJaNai/releases/tag/1.0.0这个pth转换为bin和param,
我是mac电脑,release中提供的pytorch2onnx脚本我运行总是报错找不到module,可能是兼容性问题,能帮忙转换下就太感谢了
@TransparentLC

@TransparentLC
Copy link
Owner

TransparentLC commented Nov 19, 2024

稍等一段时间,这里的模型有点多😂 之后有空的时候我试着转换一下。

@hyrulelinks
Copy link
Contributor Author

稍等一段时间,这里的模型有点多😂 之后有空的时候我试着转换一下。

不用了,我用upscayl项目里的指引,用chaiNNer完成转换了,还挺方便的,网上其他方法都有点太复杂了,转完后放到models文件夹就能用,很好,其他esrgan模型效果尝试中

@TransparentLC
Copy link
Owner

https://github.com/upscayl/upscayl/wiki/Model-Conversion-Guide

是这个教程吗?

在 chaiNNer 的源代码里翻到了这个 https://github.com/chaiNNer-org/chaiNNer/blob/main/backend/src/nodes/impl/onnx/onnx_to_ncnn.py ,应该就是实现转换的代码,不过有点复杂,不知道能不能分离出来以及会不会比现在我这里的那个脚本更好用。

@hyrulelinks
Copy link
Contributor Author

应该是先pth转onnx,好像不能直接转

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants