【python】打包神器--pyinstaller

news/2024/9/20 5:12:20/文章来源:https://www.cnblogs.com/xwltest/p/18401185
  • 1:简介
    • pyinstaller是一个python的第三方库,它能够在Windows、Linux、 Mac OS 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个独立文件方便传递和管理。在Windows上使用就打包成.exe文件。在Mac上使用就打包成mac app。

    • 在Windows中打的包,只能在Windows中使用,在Mac中打的包只能在Mac中使用

    • 最好配合虚拟环境使用

- 环境crm- python.exe- Scripts- pip.exe- pyinstaller.exe- Lib- site-package- requests- flask- pyinstaller
  • 2.多文件打包
    • 2.1:安装pyinstaller,pip install pyinstaller
    • 2.2:写一个简单脚本
import requestspram = {'query':"哈哈",
}
url = 'https://www.sogou.com/web'response = requests.get(url=url,params=pram)
page_text = response.text
print(page_text)input('按回车键结束任务.....')
  • 2.3:终端执行,pyinstaller -D demo.py,执行完成后,会生成下面几个文件,dist文件夹下,就会生成我们需要的exe执行文件

  • 2.4:执行结束后,将dist下面的文件打包给其他人,直接点击可执行文件即可执行。

  • 3.单文件打包

    • 3.1:上面的打包,会生成很多文件,dist下面的所有文件必须一起打包给别人才能执行,这样比较麻烦,如果能够打包成一个可执行文件,就会更方便了。
    • 3.2:终端执行,pyinstaller -F demo.py
    • 3.3: 注意,**打包成一个文件,并不代表只是单独的一个文件,当我们执行程序时,也会临时生成多个文件,只是执行完就删除了,我们无感知
  • 4.路径问题,如果我们的代码需要依赖其它文件,处理方法

    • 4.1:多文件打包
      • 4.1.1:代码及依赖文件
import requests
import ospram = {'query':"哈哈",
}BASE_DIR = os.path.dirname(os.path.abspath(__file__))
with open(os.path.join(BASE_DIR, "info.txt")) as f:data = f.read()
url = data.strip()response = requests.get(url=url,params=pram)
page_text = response.text
print(page_text)input('按回车键结束任务.....')


- 4.1.2:打包后,直接将依赖文件放到 _internal文件夹中

  • 4.2:单文件打包
    • 4.2.1:单文件打包后,无论怎么放置依赖文件都不行,看下面的报错信息,这就是我们上文所提到的临时目录,这里找不到info.txt所以报错
    • 4.2.2:这里有几种解决方法
      • 1):取巧,将依赖文件放置到D盘固定目录下,脚本中也修改为固定路径,缺点:数据与代码分开,不便于管理
      • 2):sys.argv[0]表示代码本身文件路径
        • 修改路径:BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
        • 打包后,将依赖文件放到可执行文件同目录即可
      • 3):frozen,打包后,依赖文件放置到可执行文件同目录也可以正常执行
import sys
if getattr(sys, 'frozen', False): # Trueprint('running in a PyInstaller bundle')   # 使用pyinstaller执行
else: # Falseprint('running in a normal Python process')    # python正常的文件
import sys
import requests
import ospram = {'query':"哈哈",
}
# BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
if getattr(sys, 'frozen', False):# pyinstaller打开BASE_DIR = os.path.dirname(sys.executable)
else:# py文件路径BASE_DIR = os.path.dirname(os.path.abspath(__file__))# https://www.sogou.com/web
with open(os.path.join(BASE_DIR, "info.txt")) as f:data = f.read()
url = data.strip()response = requests.get(url=url,params=pram)
page_text = response.text
print(page_text)input('按回车键结束任务.....')
  • 5.基于反射的动态模块加载
    • 5.1:目录及脚本
    • 5.2:这里我们在打包时,pyinstaller是不可能自动帮你选择模块的
    • 5.3:打包
    • 5.4:基于配置文件打包,第3步中打包后,删除其它文件,保留spec文件即可


    • 5.5:运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL的安装与配置流程

MYSQL的安装与配置流程 1.下载安装包 mysql官方下载链接2.解压并配置文件用管理员身份打开命令提示符进入解压的地址中使用一下命令安装MySQL服务mysqld install MySQL80 若显示下面失败的提示可以使用该指令卸载该服务后再重新安装 mysqld -remove MySQL80//此处为直接修改的服…

eyoucms易优网站后台密码忘记了怎么办?

如果你忘记了易优CMS(EyouCMS)网站后台的登录密码,可以按照以下步骤来重置密码: 方法一:使用官方提供的重置工具下载官方重置工具:访问易优CMS官网提供的重置工具下载链接:https://www.eyoucms.com/uploads/soft/200319/1-2003191Q000.zip。 下载并解压缩该工具包。上传…

eyoucms后台如何更换后台登录logo

扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、二次开发、PSD转HTML、网站被黑、网站漏洞修复等。专业解决各种疑难杂症,您有任何网站问题都…

pbootcms后台可以打开前台打不开

问题:pbootcms后台可以打开前台打不开 原因:大概率是没有授权, 去申请授权添加后台就可以扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版、BUG修复、问题处理、…

pbootcms提示:后端配置项没有正常加载,上传插件不能正常使用

打开PBootCMS程序下的core/extend/ueditor/php/controller.php文件, 将第四行的注释去掉,并且将 chongqing 修改为首字母大写 Chongqing , 修改结果如下:扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascrip…

pbootcms模板忘记后台密码怎么找回?

此工具用于忘记PbootCMS后台用户账号密码时进行重置。新建一个php文件,然后写入下面代码。稍后上传网站根目录, 访问文件就可以进入重置页面, 后续根据提示操作即可。 <?php /*** @copyright (C)2016-2099 Hnaoyun Inc.* @author XingMeng* @email hnxsh@foxmail.com*…

受 LabelImg 启发的基于 web 的图像标注工具,基于 Vue 框架

受 LabelImg 启发的基于 web 的图像标注工具,基于 Vue 框架哟,网友们好,年更鸽子终于想起了他的博客园密码。如标题所述,今天给大家带来的是一个基于 vue2 的图像标注工具。至于它诞生的契机呢,应该是我导 pass 掉了我的提议(让甲方使用 LabelImg 进行数据标注),说是要…

Parse error: syntax error, unexpected function (T_FUNCTION) in core\function\helper.php on line 80

遇到 Parse error: syntax error, unexpected function (T_FUNCTION) 的错误,通常是因为 PHP 代码中存在语法错误。这种错误通常发生在 PHP 版本不兼容的情况下,或者代码本身有语法问题。 分析错误 错误信息指出在 \core\function\helper.php 文件的第 80 行出现了语法错误。…

DNS胶水记录和DNS查询

DNS 胶水记录和DNS查询DNS 胶水记录DNS 系统 胶水记录(Glue Records) 过程抓包 完整解析过程解释 其他DNS 系统 了解过 DNS 的都知道,DNS 是一个层状系统,域名的格式是使用.分割,比如: # 最后一个.代表根 www.example.com.一个终端想要访问域名为www.example.com的web页面…

忘记PbootCMS后台用户账号密码时进行重置resetpw.php

<?php /*** @copyright (C)2016-2099 Hnaoyun Inc.* @license This is not a freeware, use is subject to license terms* @author XingMeng* @email hnxsh@foxmail.com* @date 2018年11月17日* 重置PbootCMS用户密码*/ // 设置字符集编码、IE文档模式 header(Content-Ty…

PbootCMS怎么修改管理员密码

管理员由于比较特殊,在系统用户管理中并不能修改,那怎么修改admin的密码呢? 其实每个用户登录后在右上角都可以修改自己的密码,如下图:扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿…