Re: [问题] 工作排程器执行pyinstaller的exe

楼主: zbug (瞌睡虫)   2021-08-24 19:16:52
新人报到...
系统环境 win10
python 3.9.6
最近一支程式用 pyinstall 打包成 exe 之后
程式内容包含 openfile 的读写
路径也都给予绝对路径的方式
该exe 新增至工作排程内,手动执行工作排程是正常可以读写档案
该排程的触发方式是系统重启之后的“启动时”
电脑重启之后,有触发成功,却出现回传错误码 2147942401
Google查到的答案是路径问题
请问我该怎解决这问题?谢谢
作者: lycantrope (阿宽)   2021-08-24 20:26:00
作者: tzouandy2818 (Naked Bear)   2021-08-25 11:45:00
我用pyinstaller打包传给别人 就算只是hello world也会被判定为病毒 也是用了查到的所有办法都无解所以还是能用.py就用.py吧
作者: pmove (金疾柠檬)   2021-08-26 16:33:00
您确定是路径问题?有没有可能是权限问题?另外有装Windows内建那套以外的防毒?对了,您路径里头有中文?
作者: lycantrope (阿宽)   2021-08-27 17:14:00
这error是发生在登入前执行? 没登入有设权限也没用
作者: ncueBenson (nuceBenson29)   2021-08-27 18:29:00
路径是绝对路径吧 工作排程器的路径在system32 如果用相对就会写在那工作排程器的路径不在喔喔漏看内文了 当我没说话
作者: pmove (金疾柠檬)   2021-08-27 20:39:00
如果把py转的exe, 在环境变量的path里加上该路径试试呢?
作者: lepenseur (lepenseur)   2021-09-04 06:08:00
路径要用相对路径去处理由于你执行的位置不同,当下的工作目录(CWD)也不同,你写的路径会有问题试着用这个方式写写看project_root = Path(sys._MEIPASS) if getattr(sys, 'frozen', False) else Path(__file__).absolute().parents[0]在专案开始执行的 py 档加入上面这一行,可以动态取得当前目录的绝对路径之后所有的路径都以这个 py 档的相对路径去撰写,就不会出错像这样 save_path = project_root / 'log' / 'log_20210904.txt'另外,如果你执行档是安装在 C:\Program Files (x86)或 C:\Program Files 目录中的话,要记得设定权限才能写入你的档案被 Windows 当成病毒,大概是因为没有做程式码签署,但签署凭证是要花钱买的。如果是自己使用的话,可以把软件加入防毒软件的白名单就好。

Links booklink

Contact Us: admin [ a t ] ucptt.com