python 打包exe的工具pyinstaller--遇到问题,到解决问题

前言:楼主前面写了两篇关于pyinstaller打包的两篇博客,楼主在这里总结一番:

        首先楼主写的程序是python的,生产环境下,本身是一个web展示项目,用的是h5,js,后端用的是node.js,楼主提供两个http接口用的都是python的flask框架写的。线上没有这个环境。而且还不能打包为docker,只能打包为exe

解决这个问题,楼主用的是pyinstaller包,这个包用的人不少,但是对于复杂的项目,相应的资料还是少之又少,

楼主遇到了以下问题

1. pyinstaller打包的项目绝对路径相对路径问题

       绝对路径和相对路径很关键,意味着,你的程序能不能打包之后,和配置文件一块放到线上的生产目录中,(在实际工程中,荐用相对路径)

       相对路径这里就遇到一个新的问题,就是我们的server.exe打包之后放到了dist路径下面,因为都是相对路径,主函数开始执行必须从根目录下面找,如果在dist下面就意味着相对路径失效,因为相对路径写的时候是写在根目录下的,这个时候要把server.exe放到根目录。

2.pyinstaller 打包debug问题

除了csdn等国内的博客可以使用stackflow,在stackflow中,例如楼主打包的时候报import torchvision失败,搜索[pyinstaller] torchvision,截至目前楼主的时候,torchvision 0.3还不支持,这个时候需要做如下操作,降低版本

pip uninstall torchvision

pip install torchvision ==0.2.2.post3

3.pyinstaller,告诉我no module named utils.utils

这个问题是打包的时候找不到这个文件,楼主是写在utils目录下的utils的python文件,解决这个问题,用的是,pyinstaller -F server.py --hidden-import=utils.utils,这个地方注意不要打上单引号,其实这个问题就是业务代码写的不规范的原因,对于所有的python调用的子包都应该有init.py,init里面应该写上所有的引用

其实这个问题,楼主在其中的一篇博客写到,就是python3 和python2的时候init.py中有写到,原来在python中,如果一个问题夹为一个包,包里面放可以调用的文件,需要创建init文件,在里面需要将包引入可见,楼主https://github.com/pxkc/testPackage

# from . python文件 import 函数
# from . import python 文件

from . import bbox_transform
from . import generate_anchors

在该package里面引用本层的文件需要

from .vgg16 import Vgg16

如果是package里面还有package就是from .. import 

4.总结,综上打包之后,需要的就是1.一个exe文件,2.配置文件,3.你的静态文件,就可以放到你想要的目录

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值