[問題] pyinstaller 打包package問題

作者: tonykai (阿鈣鈣~)   2023-09-07 20:29:43
不好意思想請問板上各位高手
最近接手一個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什麼的…….
作者: lycantrope (阿寬)   2023-09-08 07:33:00
用embedded python
作者: leolarrel (真.粽子無雙)   2023-09-08 13:10:00
私心認為應該有很多訊息只是你看不懂所以都ignore ...那個LOADER訊息 後面接的是什麼?
作者: yiche (你若安好,便是晴天)   2023-09-08 21:47:00
比較喜歡nuitka 包起來比較小包也比較快
作者: s860134 (s860134)   2023-09-10 04:25:00
通靈 debug. 這位學者其實沒做啥事,你的 main.py 被當作參數丟進 pyinstaller 打包的 python 作為第一個參數帶入他就跟你在一般電腦下 python main.py 沒啥不一樣比較大的問題是 pyinstaller 執行前會把 python 檔案解壓到 tmp 裡面去執行,很可能是路徑問題,你嘗試帶絕對路徑而不是 main.py類似: python_new.exe C:\tmp\main.py
作者: fragmentwing (片翼碎夢)   2023-09-13 17:44:00
樓上大大倒是解了我的疑惑 常常看到包失敗的話會跑到那邊執行就感到很奇怪不過這樣的話就代表打包要用絕對路徑然後在別的電腦上要確保路徑一致?(比方說盡量包的時候是在桌面開一個folder給它包然後新機上也是桌面開一個同名folder執行)
作者: s860134 (s860134)   2023-09-14 00:47:00
跟你寫的 python_new.py 有關你上面這些邏輯就包含著要把相對路徑轉換成絕對路徑來找到檔案

Links booklink

Contact Us: admin [ a t ] ucptt.com