使用pyinstaller 如何打包python项目

devtools/2024/10/21 19:45:14/

参考:【python项目正确打包方法-哔哩哔哩】 https://b23.tv/EDB6zbG

Pyinstaller 详解多种打包过程(去坑,填坑)。_pyinstaller -f -w-CSDN博客

1.打开命令提示符:

找到python项目所在位置,输入cmd即可

2. 安装pipenv:

在命令提示符:pip3 install pipenv

启动pipenv shell:

项目文件夹会出现:

 终端会出现:表示进入环境

3.在该环境中安装pyinstaller包和要打包的项目所需的其他包:

pip install pyinstaller

4.在该环境中输入:

pyinstaller xx.py

xx.py需要替换成自己项目的文件,这个文件需要执行整个模块的代码。

这里写的是xx.py在根目录的情况,酌情修改。

运行之后会生成dist,build文件,以及xx.spec。

5.修改xx.spec文件

a = Analysis(
    ['xx.py','CRF.py'],  写出项目中所有python文件的地址。


    pathex=[
        r'C:\Users\.virtualenvs\07_information_extraction-D51dpJc6\Lib\site-packages',
        r'D:\opencv\07_information_extraction'
    ],

第一个地址:07_information_extraction-D51dpJc6对应pipenv shell启动的环境,一般都在用户文件夹。

  • C:\Users\<用户名>:这是Windows系统中用户的主目录路径,<用户名>代表当前登录的用户名。
  • .virtualenvs:这通常是一个用户自定义的文件夹,用于存放所有的Python虚拟环境。不同的用户可能会选择不同的位置或命名方式来存放这些虚拟环境,但.virtualenvs是一个常见的选择。
  • 07_information_extraction-D51dpJc6:这是虚拟环境的名称和文件夹名。通常,虚拟环境的名称会反映其用途或与之关联的项目名称。D51dpJc6可能是一个随机生成的字符串,用于确保虚拟环境名称的唯一性,尤其是在自动化创建虚拟环境的场景中。
  • Lib\site-packages:这是Python中用于存储第三方库和模块的标准目录。在虚拟环境中,这个目录被用来隔离项目依赖,确保每个项目都有自己独立的Python环境,从而避免版本冲突等问题。

C:\Users\<用户名>\.virtualenvs\07_information_extraction-D51dpJc6\Lib\site-packages 就是你当前激活的名为07_information_extraction-D51dpJc6的Python虚拟环境中,所有第三方库和模块的存放位置。在这个目录下,你可以找到步骤3通过pip install等命令安装的库和模块。

第二个地址:python项目的根目录。


    datas=[(源路径,目标路径)
    ],源路径是打包前文件或目录的位置,目标路径是这些文件或目录在打包后的应用程序中相对于其根目录的位置。

作用是添加python项目文件中非py格式文件。

比如项目文件中存在:

代码中存在ner = CRF_NER(data_dir='07_information_extraction/data/'),

则:a = Analysis( # ... 其他参数 ... datas=[ (r'data', '07_information_extraction/data'))

或者

在源代码中修改:(这种写法更好,因为打包后的应用程序可能不会运行在你预期的目录中,或者打包工具可能没有正确处理这些路径。)

import os

base_dir = os.path.dirname(os.path.abspath(__file__))  # 获取当前脚本的目录  

data_dir = os.path.join(base_dir, 'data\\')  

print("dara",data_dir)

或者 直接把这类资源文件

6.在该环境中输入

pyinstaller xx.spec

7.打开dist/xx/下的xx.exe文件并运行。

如果出现闪退:

可以使用录屏的方式录下报错,然后修改。


http://www.ppmy.cn/devtools/57075.html

相关文章

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

目录 1.创建版本库 git init 1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做&#xff0c;完全是本地化的。 在目录中执行 git init&#xff0c;就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件&#xff0c;不…

Golang解决bufio.Scanner: token too long的问题

Golang解决bufio.Scanner: token too long的问题 在Go语言中使用bufio.Scanner时&#xff0c;遇到“token too long”&#xff08;标记过长&#xff09;的错误&#xff0c;通常是因为尝试读取的行太大&#xff0c;超过了bufio.Scanner默认的最大容量。bufio.Scanner默认的缓冲…

记一次:poi填充Word模板

前言&#xff1a;笔者在实际工作中需要生成一些报告&#xff0c;但报告的模板是固定的&#xff0c;指定位置需要替换数据或图片&#xff0c;因此总结一下 正题&#xff1a;话不多说&#xff0c;直接贴上工具类吧 package com.lhkj.iot.controller.poi;import java.io.File; i…

如何快速使用C语言操作sqlite3

itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源&#xff0c;拥抱国产化 一、sqlite3库介绍 sqlite3库可从官网下载&#xff0c;当前版本为sqlite3 3.45.3ht…

【C#】找不到属性集方法。get只读属性用了反射设置setValue肯定报错

欢迎来到《小5讲堂》 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 背景 找不到属性集方法。get只读属性用了反射设置setValue肯定报错 报错…

网络工程术语

1. IP 地址 (IP Address) IP 地址是分配给每个网络设备的唯一标识符&#xff0c;用于在网络中进行通信。IP 地址有两种主要版本&#xff1a; IPv4 和 IPv6。 IPv4 (Internet Protocol version 4): 由四组数字组成&#xff0c;每组数字在0到255之间&#xff0c;例如 192.168.…

Hadoop集群部署【一】HDFS详细介绍以及HDFS集群环境部署【hadoop组件HDFS笔记】(图片均为学习时截取的)

HDFS详细介绍 HDFS是什么 HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一 全称是&#xff1a;Hadoop Distributed File System&#xff08;Hadoop分布式文件系统&#xff09;&#xff1b;是Hadoop技术栈内提供的分布式数据存储解决方案 可以在多台服务器上构建存储集群&…

【Rust入门教程】hello world程序

文章目录 前言Hello World程序运行总结 前言 对于学习任何一种新的编程语言&#xff0c;我们都会从编写一个简单的Hello World程序开始。这是一个传统&#xff0c;也是一个开始。在这篇文章中&#xff0c;我们将一起学习如何在Rust中编写你的第一个程序&#xff1a;Hello Worl…