-
Notifications
You must be signed in to change notification settings - Fork 47
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
M1 & M2 Mac 本地构建纯arm64架构RealESRGAN GUI.app的方法(内附方法) #18
Comments
好耶!这个 Issue 我就置顶啦! GitHub Actions 规划在今年第三季度开始提供使用 M1 运行的 macOS 镜像( actions/runner-images#2187 ),到那个时候就可以在分支里把自动打包加上了。 |
深色模式界面 关于深色模式,打包时这个darkdetect包是warning的,有个_mac_detect 无法导入,实测确实不支持深色模式 |
那个 warning 可能指的是 darkdetect 的这一行:https://github.com/albertosottile/darkdetect/blob/3347df3e95e8a96118b3ae7229a8fe699701159c/darkdetect/_mac_detect.py#L25 try:
# macOS Big Sur+ use "a built-in dynamic linker cache of all system-provided libraries"
appkit = ctypes.cdll.LoadLibrary('AppKit.framework/AppKit') # <-- 这一行
objc = ctypes.cdll.LoadLibrary('libobjc.dylib')
except OSError:
# revert to full path for older OS versions and hardened programs
appkit = ctypes.cdll.LoadLibrary(ctypes.util.find_library('AppKit'))
objc = ctypes.cdll.LoadLibrary(ctypes.util.find_library('objc')) 不过我也没办法确定是 darkdetect 不应该这么导入还是 pyinstaller 的问题,翻了两遍的 issue 都没有结果…… |
请问release里面新的模型怎么用? |
还在写 README,稍后补充 |
pip install tkinterdnd2-osxarm64 |
try:
import os.path
import platform
if platform.system()=="Darwin": # <-- This line
if platform.system()=="Darwin" and platform.machine()=="arm64":
tkdnd_platform_rep = "osx64arm"
elif platform.system()=="Darwin" and platform.machine()!="arm64":
tkdnd_platform_rep = "osx64" 这样写确定不会有 |
我也不知道,晚上我回去测试下 |
这里是要删掉的,忘记删了 |
@TransparentLC 删掉了 |
这个是 这个是 windows和linux试图编译tkdnd,但失败了,不知道怎么解决,就还是用原来的tkdnd2.9.2了 |
更新下, |
请教下,我把tkdnd除arm windows以外的平台都编译到2.9.3了,然后tkinterdnd2文件目录如下:
然后
然后这个项目仓库的
实际测试会把 更新下
|
https://github.com/python/cpython/blob/3.10/Lib/platform.py#L716 这个匹配的写法是有问题的,按照短路求值的话 这种时候可以用 tuple 作为 dict 的 key,也可以换成用 # value的两个set,第一个是打包时需要带上的目录名称,第二个是那个目录里需要排除的文件
p = {
('Windows', 'AMD64'): ({'win-x64'}, {'tkdnd_unix.tcl', 'tkdnd_macosx.tcl'}),
...
}
s = (platform.system(), platform.machine())
... |
改成这样对吗,linux x64要改成amd64吗? |
只有 Windows 下才可能出现 AMD64,其他的不用改 |
|
Windows 的 |
好的,谢谢帮助!已修改windows的大写,linux和macos仍然小写(这个我用uname查出来是小写的,不确定是否也要大写),已重新上传, |
看样子没什么问题了,这样 requirements.txt 就可以改成: - tkinterdnd2 == 0.3.*; sys_platform != 'darwin' or platform_machine != 'arm64'
- tkinterdnd2-osxarm64 == 0.3.*; sys_platform == 'darwin' and platform_machine == 'arm64'
- # https://github.com/TransparentLC/realesrgan-gui/issues/18#issuecomment-1469605298
+ # https://github.com/TransparentLC/realesrgan-gui/issues/18#issuecomment-1477203041
+ tkinterdnd2-universal >= 1.7.3, < 2.0.0 参见 https://en.wikipedia.org/wiki/Uname ,Unix/Linux 那边的 |
Mac M1 按照作者大大提供的打包方法未能成功,提示: |
你看看倒数第二行 ( ゚∀。) 正常执行 Build-macOS-arm64.sh 的话是会下载 Real-ESRGAN 然后解压出模型的文件夹的。 |
谢谢回复,它提示我少了个model文件,但我不知道咋处理😅 |
从 https://github.com/xinntao/Real-ESRGAN/releases 下载 realesrgan-ncnn-vulkan-*-macos.zip 的压缩包,解压之后里面会有模型文件夹 models 和 Real-ESRGAN 的主程序(按照 realesrgan-gui-macOS-arm64.spec 写的文件名是 realesrgan-ncnn-vulkan,不是的话改一下就可以了),把这两个放到你 git clone 之后这个 repo 所在的目录下。 |
万分感谢大佬🧎,晚上回家试一下哈哈 |
现在模型有了,又提示这个: |
似乎是 realesrgan-gui-macOS-arm64.spec 写错了?打包的时候模型不应该放到 binaries 这里的。 试一下这么修改可不可以: a = Analysis(
['main.py'],
- binaries=[
- ('realesrgan-ncnn-vulkan', '.'),
- ('models', 'models'),
- ],
datas=[
+ ('realesrgan-ncnn-vulkan', '.'),
+ ('models', 'models'),
('theme', 'theme'),
('i18n.ini', '.'),
('icon.icns', '.'),
('icon-128px.png', '.'),
# macOS下通过app实现通知,打包时需要附带
*(collect_data_files('notifypy') if sys.platform == 'darwin' else []),
], 不过我没有 macOS 的设备所以没办法测试,如果还是不行的话大概就需要自己摸索了…… |
谢谢大佬,可还是不行😅 |
这个修改有效的,改过后就能打包成功,但打出来的应用双击闪退,无法正常启动 |
#39 |
https://github.com/blacklein/RealESRGAN-GUI-macOS-arm64
fork后改的仓库,专门用于M1 M2 芯片的Mac本地构建纯arm64的macOS app,效率提升相比intel app和universal app要明显,这在其他开源项目作者issue里也得到证实了,即为吊轨的是,虽然苹果官方宣称universal(即显示简介里说的“通用”)应用兼容x64和arm64,在苹果芯片电脑上优先使用arm64,理论上会跟纯arm64应用的效率一样,但实际测下里,universal应用并没有最大优化苹果芯片的效率,其他作者也证实了这点Anjok07/ultimatevocalremovergui#364 (comment)
改过的仓库里已经提供了纯arm64的tkinterdnd2、realesrgan-ncnn-vulkan,以及超分models,运行pyinstaller可以直接打包成完整的app,希望对用苹果芯片Mac的同学有帮助。
最后再次感谢T大的优秀开源项目!!!
PS:T大,我改过的realesrgan-gui-for-macOS-arm64.spec应该对intel macOS app打包应该也是有一样作用的,这样workflow应该可以大幅度简化,只是Github runner好像打包不出arm64 app,希望对你有帮助,谢谢!
The text was updated successfully, but these errors were encountered: