Python脚本打包成可独立运行的应用程序

3 篇文章 0 订阅
1 篇文章 0 订阅

1.打包单个脚本程序

参考:https://blog.csdn.net/snsb_csdn/article/details/122804590

1.1 安装pyinstaller

(1)进入python安装路径下的Scripts文件夹下,打开cmd窗口,输入命令:
python -m pip install pyinstaller
在这里插入图片描述
(2)安装完成后,该路径下可以查看到新增有pyinstaller.exe:
在这里插入图片描述

1.2 打包成应用程序

(1) 在上述的cmd窗口,继续执行命令:
pyinstaller -F -w 打包.py绝对地址
pyinstaller -F -w C:/Users/Crystal/PycharmProjects/pythonProject1/Assistant.py
在这里插入图片描述
(2) 若需指定ico,则执行命令如下:
pyinstaller -F -w -i ico地址文件 打包.py地址
pyinstaller -F -w -i C:\Crystal\Python\Python37\Scripts\dist\favicon.ico C:/Users/Crystal/PycharmProjects/pythonProject1/Assistant.py
在这里插入图片描述
(3)查看打包好的应用程序
上一步执行后,会自动创建dist文件夹,打包的程序存放在该文件夹下:
在这里插入图片描述
(4) 双击exe文件可直接运行:
在这里插入图片描述

2.打包多个脚本程序

参考:https://www.cnblogs.com/shiyongge/p/10582552.html

2.1 打包入口主程序.py为spec文件

(1)打开cmd(管理员权限),进入到打包程序存放路径中,输入:
pyi-makespec -F -w -D 主文件
pyi-makespec -F -w -D F:\pythonProject1\CASH_BACK\Q10_CashBack.py
在这里插入图片描述
(2)生成spec文件:
在这里插入图片描述
(3)打开配置文件进行对应数据配置:
在这里插入图片描述
在这里插入图片描述

2.2 在主程序中导入文件时,最好使用冻结路径,否则打包程序后,在本机上可以执行,但在其他机器上会报错

2.2.1 增加一个.py文件(主要返回对应的路径)

# -*- coding: utf-8 -*-
import sys
import os
import datetime
def app_path():
    """Returns the base application path."""
    if hasattr(sys, 'frozen'):
        # Handles PyInstaller
        print(datetime.datetime.now(),"打包后的exe目录:",os.path.dirname(sys.executable))
        return os.path.dirname(sys.executable)  # 使用pyinstaller打包后的exe目录

    print(datetime.datetime.now(), "没打包前的py目录:", os.path.dirname(__file__))
     return os.path.dirname(__file__)  # 没打包前的py目录

2.2.2 在需要导包的程序里用app_path()来导入执行

代码示例:

from _DBconnent.frozen_dir import app_path
 path = app_path()
   #--------------冻结路径的程序代码(判断路径是否存在)-------------------
    if os.path.exists(path + r'\tnsnames.ora'):   #检测目录文件是否存在
        file = path + r'\tnsnames.ora'  # 冻结路径的程序代码
        print(datetime.datetime.now(),'导入Oracle目录:',file)
        print("日志目录:",path + r'\log.txt')
        log = open(path + r'\log.txt', 'a+')
        log.writelines(str(datetime.datetime.now()) + " 导入Oracle目录:" + file + '\n')
        dsn=open(file,'r')
    elif os.path.exists(path + r'\_DBconnent'):
        file = path + r'\_DBconnent\tnsnames.ora'  # 冻结路径的程序代码
        print(datetime.datetime.now(),'导入Oracle目录:', file)
        log = open(path + r'\log\log.txt', 'a+')
        log.writelines(str(datetime.datetime.now()) + " 导入Oracle目录:" + file + '\n')
        dsn = open(file, 'r')
    else:
        os.makedirs(path)

2.2.3 spec配置文件中,将.py文件一起打包

在这里插入图片描述

2.3 spec文件配置好后进行打包

pyinstaller 配置文件(与cmd不在同个目录下使用绝对路径)
pyinstaller Q10_CashBack.spec
在这里插入图片描述

PS:用python连接oracle数据库,程序运行时会无法识别oracle客户端,解决方法:因为pycharm代码运行正常,所以再python的安装路径下找到\Lib\site-packages目录下的oci.dll,oraocci11.dll,oraociei11.dll拷贝到disk下已打包好的程序包,再执行exe

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值