作者tonykai (阿鈣鈣~)
看板Python
標題[問題] pyinstaller 打包package問題
時間Thu Sep 7 20:29:43 2023
不好意思想請問板上各位高手
最近接手一個python程式的維護
但特殊的地方是當初開發的人(已畢業)他當初是把python.exe跟其它需要的package打包
成新的’python_new.exe’
因為這一個程式很常需要複製到不同的電腦(沒網路)上run,他直接寫一個batch裡面只有
一行‘python_new.exe main.py’去執行主要程式’main.py’
看當初那個學長的紀錄是’用pyinstaller 把pandas,numpy 打包成python_new.exe’然後
就沒有其他訊息了…
想請問板上各位高手們這個大概是怎麼做到的啊@@?
小弟目前有試過把下面的code存成‘python_new.py’:
import sys, subprocess
subprocess.call([‘python’, sys.argv[1])
然後下’pyinstaller -d=all -F python_new.py’
但新的’python_new.exe’在沒網路跟python的電腦上跑起來就會一直看到LOADER的字眼但
就是不會啟動,跑了半小時還是一直瘋狂跳出LOADER跟_frozen什麼的…….
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.78.69 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1694089785.A.8E6.html
1F:→ lycantrope: 用embedded python 09/08 07:33
2F:→ leolarrel: 私心認為應該有很多訊息只是你看不懂所以都ignore ... 09/08 13:10
3F:→ leolarrel: 那個LOADER訊息 後面接的是什麼? 09/08 13:10
4F:推 yiche: 比較喜歡nuitka 包起來比較小包也比較快 09/08 21:47
5F:→ s860134: 通靈 debug. 這位學者其實沒做啥事,你的 main.py 被當作 09/10 04:25
6F:→ s860134: 參數丟進 pyinstaller 打包的 python 作為第一個參數帶入 09/10 04:26
7F:→ s860134: 他就跟你在一般電腦下 python main.py 沒啥不一樣 09/10 04:27
8F:→ s860134: 比較大的問題是 pyinstaller 執行前會把 python 檔案解壓 09/10 04:28
9F:→ s860134: 到 tmp 裡面去執行,很可能是路徑問題,你嘗試帶絕對路徑 09/10 04:28
10F:→ s860134: 而不是 main.py 09/10 04:29
11F:→ s860134: 類似: python_new.exe C:\tmp\main.py 09/10 04:32
12F:推 fragmentwing: 樓上大大倒是解了我的疑惑 常常看到包失敗的話會跑 09/13 17:44
13F:→ fragmentwing: 到那邊執行就感到很奇怪 09/13 17:44
14F:→ fragmentwing: 不過這樣的話就代表打包要用絕對路徑然後在別的電腦 09/13 17:49
15F:→ fragmentwing: 上要確保路徑一致?(比方說盡量包的時候是在桌面開 09/13 17:49
16F:→ fragmentwing: 一個folder給它包然後新機上也是桌面開一個同名fold 09/13 17:49
17F:→ fragmentwing: er執行) 09/13 17:49
18F:→ s860134: 跟你寫的 python_new.py 有關 09/14 00:47
19F:→ s860134: 你上面這些邏輯就包含著要把相對路徑轉換成絕對路徑來找 09/14 00:48
20F:→ s860134: 到檔案 09/14 00:48