pyinstaller—PuLP投标价格预算项目打包过程踩坑

2024-01-28 12:36

本文主要是介绍pyinstaller—PuLP投标价格预算项目打包过程踩坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python—pyinstaller打包PuLP踩坑


引言

在昨天的文章中,我们提到已经实现了相关代码的编写,即:通过Python环境和编辑器实现代码的运行,最终实现对数据的处理,得到想要的修改过后的项目结果。但是我们又面临着这样一个问题,那就是,客户的电脑上很有可能是没有Python环境的,这就像部分计算机专业的同学,可能四年学完了,电脑上都不一定有装过任何一门编程语言的环境。所以,我们需要将本地的Python代码打包成一个exe的可执行文件,这样,就可以实现摆脱Python环境运行程序的要求。
那么,我们又该如何做呢?

必知必会

在C/C++语言中,我们在cpp文件编译之后能够自动生成exe文件;在Java中,我们可以将相关的项目代码打包成jar包,再将其转换为exe文件;在Python中,我们可以使用pyinstaller库,实现对相关代码的打包。

pyinstaller库

安装

在项目控制台或者全局cmd中输入

pip install pyinstaller

当然,如果你的网速不够块的话,你可以试试添加国内的安装镜像加速,具体的指令如下:

 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

或者

pip3 install pyinstaller -i https://pypi.douban.com/simple/

都是可以的。

使用

安装完成后,我们开始对原本的budget_bid_price_version01.py进行打包,我是在控制台中输入了下列命令:

pyinstaller -F budget_bid_price_version01.py

然后等待一会,就得到了两个文件夹dist和build,以及一个budget_bid_price_version01.spec文件,打开dist文件夹,里面已经生成了我们所需要的exe可执行程序。正常的话,双击后运行即可。

1 pyinstaller不是内部或外部命令

先说说我自己的情况。我在本地安装了Python3.10的环境,又安装了Anaconda中的3.8的Python环境,同时在Anaconda中创建了3.7、3.9以及一个提供给其他专门项目的虚拟环境,在创建我们当前的项目时又激活了一个项目的虚拟环境。
是的,我的电脑里Python环境有点混乱,所以“pyinstaller不是内部或外部命令”这个坑把我按在地上摩擦了一天,最后,我决定,重装Python环境,同时也卸载了Anaconda,毕竟我发现我基本不太使用这个。
重装的速度还是很快的。重新按照Python之后,我直接将本地的项目环境配置为全局的环境,安装了pyinstaller,之后在控制台中输入了

pyinstaller -F budget_bid_price_version01.py

得到了exe文件

2 ModuleNotFoundError:No module named ‘xxx’

在运行时,我们发现了这个报错,是的,我们的打包过程中没有把原本程序中应该有的几个库一同打包,具体如何解决我也不知道,因为我后来又试了几次,发现可以运行了,不过大家可以参考文章末的几篇相关博客。
在这里插入图片描述

3 AttributeError:‘NoneType’ object has no attribute ‘actualSolve’

在这里插入图片描述
这个报错是因为打包PuLP时没有把求解器也打包进去导致的(应该是这个原因),我们可以在项目的环境里找到一个cbc.exe,
相对本项目的地址为:

"budgetBidPrice\env\envs\Lib\site-packages\pulp\solverdir\cbc\win\64\cbc.exe"

将其提取出来放置到与代码同级的目录下
在这里插入图片描述

同时修改一下代码:

MyProblem.solve()

改为

currentpath = os.getcwd()
solverpath = os.path.join(currentpath,'cbc.exe')
MyProblem.solve(COIN_CMD(path=solverpath)) 

即可。
然后继续按照上面的打包方式进行打包,并将cbc.exe复制到dist文件夹下,此时得到的exe文件应该就可以正常运行了,至少我的是可以正常运行了。
在这里插入图片描述
此处的main.exe是我修改了名字后的文件,毕竟每次都得输入那么长的文件名着实有点长。


附录:
PyInstaller如何将依赖文件打包到exe可执行程序中
pyinstaller打包exe程序步骤和添加依赖文件方法
我尝试创建一个 exe 文件,该文件使用 Pyinstaller 创建具有组合优化 (Pulp) 的容器交付计划
关于python线性规划包pulp在运行时出现找不到cbc的问题
Python:PuLP模块中没有所有求解器


以上就是这个投标价格修改从开发到打包的所有主要流程。欢迎大家持续关注。

关于代码的使用与二次修改,请遵守MIT.LICENSE开源协议,本人保留著作权等相关法律权利。

这篇关于pyinstaller—PuLP投标价格预算项目打包过程踩坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653650

相关文章

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项