PYTHON打包成EXE文件,能在没有环境的电脑上运行

文章介绍了如何使用pyinstaller将Python程序打包成exe文件,包括不同打包选项的含义和使用场景。对于无UI界面的程序,双击exe会快速闪退,需在终端中运行。如果代码中使用了jpype调用jar包,需要确保将jre文件夹与exe一同打包,并正确设置jvm.dll路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、pyhton 程序打包
安装pipinstaller,用于文件打包:

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

生成main.py文件,内容如下:

def print_hi(name):
    # Use a breakpoint in the code line below to debug your script.
    print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.
    
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_hi('PyCharm')

在上面提到的 Terminal 命令行界面中输入:

pyinstaller -F main.py
常用可选项及说明:
-F:打包后只生成单个exe格式文件;
-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;
-c:默认选项,使用控制台(就是类似cmd的黑框);
-w:不使用控制台;
-p:添加搜索路径,让其找到对应的库;
-i:改变生成程序的icon图标。

其他参数:
https://blog.youkuaiyun.com/infent/article/details/84976312
https://blog.youkuaiyun.com/qq_40430818/article/details/121846273

即可对main.py文件进行打包,exe文件生成在dist文件夹中。

此时,由于我们打包的文件没有UI界面,双击exe后会快速闪退,我们需要在cmd中打开文件,看到输出如下:
在这里插入图片描述

注意,若需要使用虚拟环境中的其他库,以及项目内import的相关py文件,则需要使用以下命令:

pyinstaller -F -w pyqt5_test.py -p C:\Users\Administrator\anaconda3\envs\SyQuant\Lib\site-packages --hidden-import C:\Users\Administrator\Desktop\pyqt5

其中,前一个路径为虚拟环境的包路径,后一个路径为项目文件路径。

二、如果用jpype调用了jar
python在生成exe时,如果代码中使用jpype调用了jar包,由于java需要将exe和jdk包含在一个文件下,所以要将本地的jre整个文件夹放入项目中,然后获取jre\bin\server\jvm.dll的路径。如第12行代码

import jpype
import os
 
def pyToJava():
    # 使用idea生成的jar包的路径
    jarpath = os.path.join(os.path.abspath('.'), r'E:\Python\Project\py_jar\myJava.jar')
 
    # jar包需要的依赖的路径
    dependency = os.path.join(os.path.abspath('.'), 'E:\Python\Project\py_jar\dependency')
 
    # 获取jvm.dll的路径
    jvmPath = os.path.join(os.path.abspath('.'), 'jre\bin\server\jvm.dll')
 
    # 启动java虚拟机,入参:jvm.dll路径、jar包路径、依赖包路径
    jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % jarpath, "-Djava.ext.dirs=%s" % dependency)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值