youthfire 最近的时间轴更新
youthfire
ONLINE

youthfire

V2EX 第 33111 号会员,加入于 2013-01-27 09:39:37 +08:00
今日活跃度排名 9074
大家的 IOS JD 客户端“价格保护”还在吗?
问与答  •  youthfire  •  55 天前  •  最后回复来自 Mountain
3
Mac 上大家怎么处理老硬盘的数据
macOS  •  youthfire  •  152 天前  •  最后回复来自 zacklin99
20
对 Python 里多进程池用法有点迷茫
Python  •  youthfire  •  171 天前  •  最后回复来自 youthfire
21
youthfire 最近回复了
@no1xsyzy 感谢建议,试了 1,结果是程序没有跑起来(包括 tkinter 的 gui 也没有加载),改回 env 就正常了.
补充一句,脚本编辑器编辑后,另存为程序,且注意存放路径(默认存储在脚本文件夹下,可以指定桌面等其他位置)
找到方法,并且试验成功
参考来源:
https://stackoverflow.com/questions/36864537/how-to-run-a-python-3-tkinter-app-without-opening-any-terminal-windows-in-mac-os

利用 Mac 自带的脚本编辑器(Script Editor)
新建脚本后输入如下:(替换掉自己的 py 文件路径即可)
do shell script "export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; /usr/local/bin/python3 '/Users/USER/FOLDER/SCRIPT.py' &> /dev/null &"

之前遇到过其中一段代码不执行,检查后发现,applescript 对路径的要求比 terminal(console)更高,找不到就直接不执行了,我的一个 sqlite lite 就是没指定路径(平时默认在 user 下,terminal 会直接找到,但这里脚本却不行)
参考来源:
https://developer.apple.com/library/archive/technotes/tn2065/_index.html#//apple_ref/doc/uid/DTS10003093-CH1-TNTAG1-MY_COMMAND_WORKS_FINE_IN_TERMINAL__BUT_WHEN_I_TRY_TO_USE_IT_IN_DO_SHELL_SCRIPT__I_GET_AN_ERROR_ABOUT____COMMAND_NOT_FOUND______WHAT___S_GOING_ON_

这样可以成功输出独立 app,且完全没有终端窗口影响.希望对遇到一样问题的朋友有帮助.
@ysc3839 zsh: no such file or directory: ./pygui
@BingoXuan 谢谢推荐,也试过了.pyinstaller 的能加载出 gui,但不能执行命令.这个打包后 gui 都加载不出
@ysc3839 原来确实没加.现在加上不报这个错误了,直接双击运行,app 毫无反应
@yucongo 这个不是,这个隐藏了 tkinter 的 root(window),我是需要隐藏 terminal
@ysc3839 感谢回复,试过了.打包完运行,显示“You can’t open the application “pygui” because this application is not supported on this Mac.” - 不清楚原因,目前用的是 Big Sur 11.1
@LeeReamond 试过了,确实顺利完成了打包,且运行时没有终端窗口了.但 tkinter 的窗口是顺利加载了,但点击按钮后程序却没有正常运行.用的命令就是 pyinstaller --noconsole xxx.py,选用的是 dist 文件夹下的同名程序
@LeeReamond #1 感谢提供思路,回头我看看,但这样体积要剧增了吧
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4979 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 03:40 · PVG 11:40 · LAX 19:40 · JFK 22:40
♥ Do have faith in what you're doing.