关于使用pyinstaller的种种细节

  在网上,我们都会看见有些博主建议我们使用pyinstaller的-F与-w参数,前者是表示“打包一个.py文件”,而默认的是-D,意思是打包一个项目(文件夹);后者表示“打开.exe文件时不会弹出cmd窗口”。

  但普遍没有说解释,导致新手动不动就出错报错,很犯难。

  以下,是我实践之后的结论,以及解决措施:

  1.如果你的.py源文件里,如果需要输出信息,也就是“print() 或 sys.stdout.write()”,那不能加-w参数,因为你需要向工作台输出信息,cmd就相当于工作台了,所以不能加(如果加了,会AttributeError: 'NoneType' object has no attribute 'write')。

  2.当你使用-F参数时,也就是只打包一个.py源文件时,你在源文件里使用的exec("xxxx".read())这类打开文件读取并执行的操作也会报错,以及用上下文管理器打开文件(如.txt .dat .json .pkl)并读取数据这类牵扯到文件操作的都会受到影响。这时,必须把你保存数据的这些文件以原有形式移动到dist文件夹下,也就是移动到打包后.exe所在的文件夹下,这样程序就正常了。

  所说的原有形式,就是“相对路径下的原分布,只不过.py源文件变成了.exe罢了”。

  欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值