参考:【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文件并运行。
如果出现闪退:
可以使用录屏的方式录下报错,然后修改。