pipenv创建虚拟环境,并用Pyinstaller 打包流程

背景

最近由于需要经常切换DNS,就用python做了个小工具,程序中用到了pywin32, wmi, tkinter, 虚拟环境用pipenv,并用pyinstaller打包,最后用mt.exe添加UAC权限,在此将打包过程写下来

1. 用pipenv创建python3.6.6虚拟环境

创建固定版本python虚拟环境需要先在本机安装该版本,并添加到系统环境变量(下面的命令均在windows下的powershell执行):

  1. 安装pipenv
 pip install pipenv   
  1. 在干净目录下初始化python环境, 系统会自动在环境变量里搜索符合要求的python环境
pipenv --python 3.6
  1. 进入虚拟环境(第一次进入会自动进行安装 pipenv install)
pipenv shell
  1. 退出虚拟环境
exit
  1. 进入虚拟环境内,通过pip安装程序依赖(期间32位python3.4环境下安装pywin32一直失败,后来换成64位python3.6成功,具体原因还未探究,有可能本人使用的阿里pip服务,未找到相应的包)
pip install wmi
pip install pywin32
pip install pyinstaller

这里安装不太规范,应该使用pipenv install packagename, 这样会把依赖包写入当前虚拟环境目录中的Pipfile, 方便我们开发完成后的部署
Pipfile详细描述:[https://blog.windrunner.me/python/pip.html]
更多pipenv参数介绍:[http://blog.51cto.com/1840558/2073283]

2. 在虚拟环境内通过pyinstaller打包

步骤简单,参数较多,如:用dnstool.py的单个python代码,生成以logo.ico为图标的单个exe窗体应用。

pyinstaller -F -w -i logo.ico dnstool.py
打包参数:
  • -F 打包成单个exe文件,如果没有-F参数,则放在代码同名的文件夹内
    该参数有可能导致你的应用在不同环境下发生兼容问题,而将依赖打包在同一文件夹下的方式兼容性更强
  • -w / -c 打包成窗体应用,还是 控制台应用
  • -i icon.ico 添加默认图标, 多个png生成单个ico文件工具 ,不过不同windows系统下图标有兼容问题,懒得详细探究了
    参考1
    官方文档

添加管理员权限启动(UAC)

  1. 在生成后的exe跟目录创建一个后缀为 .manifest 具有相同exe名的文件,将下面代码写入
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
<assemblyIdentity  
    version="1.0.0.0"  
    processorArchitecture="X86"  
    name="myapp.exe.manifest"  
    type="win32"  
/>  
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">  
    <security>  
        <requestedPrivileges>  
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>  
        </requestedPrivileges>  
    </security>  
</trustInfo>  
</assembly>  
  1. 也可以将 manifest 文件写入exe,适合单个文件的应用
  • 工具mt.exe的文件位置:C:\Program Files (x86)\Windows Kits\10\bin\x64\mt.exe
  • 用cmd命令进入mt.exe 文件根目录,通过如下命令将manifest文件写入exe中
mt -manifest D:\Git\Python\pipenv3.4\dist\dns.exe.manifest -outputresource:D:\Git\Python\pipenv3.4\dist\dns.exe;1

写入成功后可以发现我们的exe文件图标上多了个盾牌
参考:通过添加manifest文件,使启动应用时弹出UAC窗口

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
PyInstaller是一个可以将Python代码打包成可执行文件的工具。你可以使用简单的命令行来进行打包操作。例如,使用命令"pyinstaller -option xxx.py"来打包xxx.py文件。 在打包过程中,可能会遇到一些问题,其中之一是虚拟环境中缺少程序所需的第三方包。解决这个问题很简单,只需要在虚拟环境下使用"pip install"命令安装所需的包即可。 另外,你可以选择使用国内的服务器来进行安装,这样会更快速。例如,你可以使用清华源或豆瓣源来安装PyInstaller。命令示例如下: ``` pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller # 清华源 pip install -i https://pypi.douban.com/simple/ pyinstaller # 豆瓣源 ``` 这样就可以在虚拟环境中成功安装PyInstaller并进行打包操作了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pyinstaller打包完整python项目 使用虚拟环境的python项目的打包](https://blog.csdn.net/feiyu68/article/details/117175210)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用pyinstaller打包](https://blog.csdn.net/weixin_42444172/article/details/120550695)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

py大牛牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值