Re: [問題] 工作排程器執行pyinstaller的exe

看板Python作者 (瞌睡虫)時間4年前 (2021/08/24 19:16), 4年前編輯推噓7(7025)
留言32則, 6人參與, 最新討論串2/2 (看更多)
新人報到... 系統環境 win10 python 3.9.6 最近一支程式用 pyinstall 打包成 exe 之後 程式內容包含 openfile 的讀寫 路徑也都給予絕對路徑的方式 該exe 新增至工作排程內,手動執行工作排程是正常可以讀寫檔案 該排程的觸發方式是系統重啟之後的「啟動時」 電腦重啟之後,有觸發成功,卻出現回傳錯誤碼 2147942401 Google查到的答案是路徑問題 請問我該怎解決這問題?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.218.11 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1629803814.A.00F.html

08/24 20:26, 4年前 , 1F
最後放棄,該調整都調了,還是不懂為何不能讀寫

08/25 11:45, 4年前 , 2F
我用pyinstaller打包傳給別人 就算只是hello world
08/25 11:45, 2F

08/25 11:45, 4年前 , 3F
也會被判定為病毒 也是用了查到的所有辦法都無解
08/25 11:45, 3F

08/25 11:46, 4年前 , 4F
所以還是能用.py就用.py吧
08/25 11:46, 4F
我原本的寫 是要寫入 log.txt,但是 一旦有寫入動作就會失敗 目前改用 win32evtlogutil win32evtlog 的套件,寫入 事件檢視器的應用程式紀錄

08/26 16:33, 4年前 , 5F
您確定是路徑問題?有沒有可能是權限問題?另外有裝Windows
08/26 16:33, 5F

08/26 16:33, 4年前 , 6F
內建那套以外的防毒?對了,您路徑裡頭有中文?
08/26 16:33, 6F
1. 不能完全確定是路徑問題,但是只要增加讀寫檔案功能就出錯,工作排程給的回應是路徑問題 2. 權限都是給最大,路徑上的目錄都是 everyone 權限全開 3. 路徑沒中文 4. 防毒軟體 NOD32,沒測試移除之後的狀況 ※ 編輯: zbug (220.135.218.11 臺灣), 08/26/2021 21:34:45

08/27 17:14, 4年前 , 7F
這error是發生在登入前執行? 沒登入有設權限也沒用
08/27 17:14, 7F

08/27 18:29, 4年前 , 8F
路徑是絕對路徑吧 工作排程器的路徑在system32 如果
08/27 18:29, 8F

08/27 18:29, 4年前 , 9F
用相對就會寫在那
08/27 18:29, 9F

08/27 18:32, 4年前 , 10F
工作排程器的路徑不在喔喔漏看內文了 當我沒說話
08/27 18:32, 10F
最後依舊是把檔案讀寫的功能放上去,依舊是透過 pyinstall 轉exe 工作排程改...先執行批次檔...再透過批次檔去執行 py轉的exe 然後就成功了...另外測試的時候 有放到 win11...被當病毒封鎖了 XDDDD ※ 編輯: zbug (220.135.218.11 臺灣), 08/27/2021 18:37:11

08/27 20:39, 4年前 , 11F
如果把py轉的exe, 在環境變數的path裡加上該路徑試試呢?
08/27 20:39, 11F

09/04 06:08, , 12F
路徑要用相對路徑去處理
09/04 06:08, 12F

09/04 06:13, , 13F
由於你執行的位置不同,當下的工作目錄(CWD)也不同,
09/04 06:13, 13F

09/04 06:13, , 14F
你寫的路徑會有問題
09/04 06:13, 14F

09/04 06:14, , 15F
試著用這個方式寫寫看
09/04 06:14, 15F

09/04 06:15, , 16F
project_root = Path(sys._MEIPASS) if getattr(sys, '
09/04 06:15, 16F

09/04 06:15, , 17F
frozen', False) else Path(__file__).absolute().pare
09/04 06:15, 17F

09/04 06:15, , 18F
nts[0]
09/04 06:15, 18F

09/04 06:17, , 19F
在專案開始執行的 py 檔加入上面這一行,可以動態取得
09/04 06:17, 19F

09/04 06:17, , 20F
當前目錄的絕對路徑
09/04 06:17, 20F

09/04 06:18, , 21F
之後所有的路徑都以這個 py 檔的相對路徑去撰寫,就不
09/04 06:18, 21F

09/04 06:18, , 22F
會出錯
09/04 06:18, 22F

09/04 06:19, , 23F
像這樣 save_path = project_root / 'log' / 'log_2021
09/04 06:19, 23F

09/04 06:19, , 24F
0904.txt'
09/04 06:19, 24F

09/04 06:25, , 25F
另外,如果你執行檔是安裝在 C:\Program Files (x86)
09/04 06:25, 25F

09/04 06:25, , 26F
或 C:\Program Files 目錄中的話,要記得設定權限才
09/04 06:25, 26F

09/04 06:25, , 27F
能寫入你的檔案
09/04 06:25, 27F

09/04 06:27, , 28F
被 Windows 當成病毒,大概是因為沒有做程式碼簽署,
09/04 06:27, 28F

09/04 06:27, , 29F
但簽署憑證是要花錢買的。如果是自己使用的話,可以把
09/04 06:27, 29F

09/04 06:27, , 30F
軟體加入防毒軟體的白名單就好。
09/04 06:27, 30F

12/29 19:23, , 31F
如果不介意名字遠流傳,網路上有教用自然人憑證來簽署也是一
12/29 19:23, 31F

12/29 19:23, , 32F
種方法
12/29 19:23, 32F
文章代碼(AID): #1X9DKc0F (Python)
文章代碼(AID): #1X9DKc0F (Python)