一、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)