作者zbug (瞌睡虫)
看板Python
标题Re: [问题] 工作排程器执行pyinstaller的exe
时间Tue Aug 24 19:16:52 2021
新人报到...
系统环境 win10
python 3.9.6
最近一支程式用 pyinstall 打包成 exe 之後
程式内容包含 openfile 的读写
路径也都给予绝对路径的方式
该exe 新增至工作排程内,手动执行工作排程是正常可以读写档案
该排程的触发方式是系统重启之後的「启动时」
电脑重启之後,有触发成功,却出现回传错误码 2147942401
Google查到的答案是路径问题
请问我该怎解决这问题?谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.135.218.11 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1629803814.A.00F.html
最後放弃,该调整都调了,还是不懂为何不能读写
2F:→ tzouandy2818: 我用pyinstaller打包传给别人 就算只是hello world 08/25 11:45
3F:→ tzouandy2818: 也会被判定为病毒 也是用了查到的所有办法都无解 08/25 11:45
4F:→ tzouandy2818: 所以还是能用.py就用.py吧 08/25 11:46
我原本的写 是要写入 log.txt,但是 一旦有写入动作就会失败
目前改用 win32evtlogutil win32evtlog 的套件,写入 事件检视器的应用程式纪录
5F:推 pmove: 您确定是路径问题?有没有可能是权限问题?另外有装Windows 08/26 16:33
6F:→ pmove: 内建那套以外的防毒?对了,您路径里头有中文? 08/26 16:33
1. 不能完全确定是路径问题,但是只要增加读写档案功能就出错,工作排程给的回应是路径问题
2. 权限都是给最大,路径上的目录都是 everyone 权限全开
3. 路径没中文
4. 防毒软体 NOD32,没测试移除之後的状况
※ 编辑: zbug (220.135.218.11 台湾), 08/26/2021 21:34:45
7F:推 lycantrope: 这error是发生在登入前执行? 没登入有设权限也没用 08/27 17:14
8F:推 ncueBenson: 路径是绝对路径吧 工作排程器的路径在system32 如果 08/27 18:29
9F:→ ncueBenson: 用相对就会写在那 08/27 18:29
10F:推 ncueBenson: 工作排程器的路径不在喔喔漏看内文了 当我没说话 08/27 18:32
最後依旧是把档案读写的功能放上去,依旧是透过 pyinstall 转exe
工作排程改...先执行批次档...再透过批次档去执行 py转的exe
然後就成功了...另外测试的时候 有放到 win11...被当病毒封锁了 XDDDD
※ 编辑: zbug (220.135.218.11 台湾), 08/27/2021 18:37:11
11F:推 pmove: 如果把py转的exe, 在环境变数的path里加上该路径试试呢? 08/27 20:39
12F:→ lepenseur: 路径要用相对路径去处理 09/04 06:08
13F:→ lepenseur: 由於你执行的位置不同,当下的工作目录(CWD)也不同, 09/04 06:13
14F:→ lepenseur: 你写的路径会有问题 09/04 06:13
15F:→ lepenseur: 试着用这个方式写写看 09/04 06:14
16F:→ lepenseur: project_root = Path(sys._MEIPASS) if getattr(sys, ' 09/04 06:15
17F:→ lepenseur: frozen', False) else Path(__file__).absolute().pare 09/04 06:15
18F:→ lepenseur: nts[0] 09/04 06:15
19F:→ lepenseur: 在专案开始执行的 py 档加入上面这一行,可以动态取得 09/04 06:17
20F:→ lepenseur: 当前目录的绝对路径 09/04 06:17
21F:→ lepenseur: 之後所有的路径都以这个 py 档的相对路径去撰写,就不 09/04 06:18
22F:→ lepenseur: 会出错 09/04 06:18
23F:→ lepenseur: 像这样 save_path = project_root / 'log' / 'log_2021 09/04 06:19
24F:→ lepenseur: 0904.txt' 09/04 06:19
25F:→ lepenseur: 另外,如果你执行档是安装在 C:\Program Files (x86) 09/04 06:25
26F:→ lepenseur: 或 C:\Program Files 目录中的话,要记得设定权限才 09/04 06:25
27F:→ lepenseur: 能写入你的档案 09/04 06:25
28F:→ lepenseur: 被 Windows 当成病毒,大概是因为没有做程式码签署, 09/04 06:27
29F:→ lepenseur: 但签署凭证是要花钱买的。如果是自己使用的话,可以把 09/04 06:27
30F:→ lepenseur: 软体加入防毒软体的白名单就好。 09/04 06:27
31F:推 nsay: 如果不介意名字远流传,网路上有教用自然人凭证来签署也是一 12/29 19:23
32F:→ nsay: 种方法 12/29 19:23