作者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/cn.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