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