cxfreeze将python项目打包成.exe

        最近要把一个python项目打包成.exe迁移到其他无环境的电脑上直接运行,最初打算使用pyinstall,不过有人说pyinstall打包总是缺少某些依赖,所以就在网上寻找方法,选择了使用cxfreeze进行打包。        

        虽然网上关于cxfreeze打包的例子很多,但是大多数都是利用一个python文件进行示范,而对于大项目打包中出现的问题,都是未提及到的,所以今天在此记录一些打包中遇到的问题。

        首先下载cxfreeze,在该网站找到对应的版本进行下载。Archived: Python Extension Packages for Windows - Christoph Gohlke (uci.edu)

        然后根据下面链接中的方法进行python程序打包。利用cx_freeze打包python程序 - 知乎 (zhihu.com)

        打包结束后点击生成的.exe文件,就会出现下面的错误。                

        图片中显示打包后的torch文件里,缺少动态链接库或者其依赖。按照指定位置去寻找,该动态链接库存在,所以考虑是缺少依赖库。一些文章表示使用depends软件可以找到缺失的依赖库,但是由于对该软件不熟悉,所以最后也是没有解决。

        不过在原环境的位置下,将.exe拖入,就可以执行,所以该问题是在打包过程中有些依赖并没迁移过去。​​​​​​​​​​​​​​

        该环境是anaconda虚拟环境,安装过程中使用conda和pip,看到某些文章说使用混合指令安装的包一起打包,容易出错,也有的文章说打包的时候conda 和torch不兼容。为了解决问题,尝试着在本地环境上只使用pip安装该项目所需的包,最后再利用cxfreeze打包成.exe。不过在安装的过程中,出现了问题,发现有些安装包只能使用conda指令进行安装,所以该方法并未成功。

        接下来的解决方案就是新建了一个虚拟环境,逐个安装环境查看是因为缺失什么安装包,出错的原因是什么,最后发现在打包的过程中,某些安装包文件迁移过程中总会漏掉一些,就比如在原环境torch文件夹下的.py文件转化为.pyc后,并没有全部都迁移到打包后的lib文件夹下的torch文件夹里,所以根据提示出错的文件逐个排查,复制粘贴过去。

        由于上面的启发,我猜想上述torch中缺少依赖的问题,是否也是因为某些依赖没打包过去。我找到了原环境中依赖的位置,在Library\bin里,然后尝试着将这些依赖复制粘贴到打包后的lib文件夹下。

        完成上述步骤后,再点击.exe文件就可以正常运行了。来来回回查找,不断排除,经过几天后终于完成了。总而言之,在利用cxfreeze将python项目打包成.exe文件后,运行.exe文件出现错误时,大概率是因为原环境中的某些东西并没正常的被打包,需要手动复制粘贴过去。

        至此,该篇文章结束。由于该项目打包成功后有其他事情耽误,所以隔了几天才写的这篇文章,因此可能会有其他问题并没有提及到,以后想到的话继续补充。

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 将Python项目打包.exe文件可以使用工具如pyinstaller或cxfreeze。PyInstaller是一个常用的打包工具,但有时会出现缺少依赖的问题。如果你遇到了这个问题,可以尝试使用cxfreeze进行打包。\[1\]以下是一个简单的步骤来打包Python项目: 1. 在PyCharm中打开项目,确保使用虚拟环境的Python解释器。你可以在PyCharm的设置中进行配置。\[2\] 2. 在项目中创建一个hello.py文件,并编写你的代码。 3. 使用pip freeze > requirements.txt命令将项目的依赖库导出到requirements.txt文件中。如果存在版本冲突,你可以手动编辑requirements.txt文件,去掉版本号,这样在打包时会自动下载对应的包。\[3\] 4. 在桌面上创建一个文件夹,将项目的根目录以及子目录文件复制到该文件夹中。 5. 编写Dockerfile文件,用于创建Docker镜像。在Dockerfile中,你需要指定基于的基础镜像、将项目文件添加到镜像中、设置工作目录、安装依赖库并指定运行命令。\[3\] 6. 最后,使用相应的工具进行打包,生可执行文件或Docker镜像。 请注意,具体的打包步骤可能因项目的结构和需求而有所不同。你可以根据自己的项目进行相应的调整和配置。 #### 引用[.reference_title] - *1* [cxfreezepython项目打包.exe](https://blog.csdn.net/qq_43640679/article/details/127135970)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [将本地Python项目打包docker镜像,上传到服务器,在docker中运行](https://blog.csdn.net/weixin_35770067/article/details/130330384)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值