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

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

springboot3打包成war包,用tomcat8启动

1、在pom中,将打包类型改为war <packaging>war</packaging> 2、pom中排除SpringBoot内置的Tomcat容器并添加Tomcat依赖,用于编译和测试,         *依赖时一定设置 scope 为 provided (相当于 tomcat 依赖只在本地运行和测试的时候有效,         打包的时候会排除这个依赖)<scope>provided

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免