python编程软件 免安装,python如何制作安装包

大家好,给大家分享一下python编程软件 免安装,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

Source code download: 本文相关源码

大家好,我是小小明,今天我将教大家一种除了用python内置库打包,让没有安装python的机器能够直接运行python程序的方法。

具体原理就是我们制作一个绿化版的python,将其放在项目目录下,用系统对应的脚步去调用相应命令启动程序python的皮卡丘如何写代码。当然本文只针对Windows平台,对于Mac平台应该原理也差不多,大家可以再理解本文的操作逻辑后,再针对性在Mac平台操作。

注意:如果希望打包后的项目不带源代码,可以将项目批量编译为pyc后再进行打包。如果对源代码的安全性有更高的要求,可以使用编译为pyd格式后再进行打包。

最终本文的打包后的效果如下:

动画

至于pyd格式,读者们可以自行研究。

首先我们需要制作一个绿化版python备用:

绿化版python的制作

下载zip包

首先我们需要去下载一个解压版(zip格式)的python,注意不要下载安装版的。

各版本的下载地址在:Index of /ftp/python/

这里面包含了全部版本的原生python:

image-20210715104857229

我选择了3.7.4这个版本:

image-20210715105141099

每个版本下面可以选择的下载文件很多:

  • 从系统位数分为32位和64位;
  • 从平台分为Windows、Mac和Linux;
  • 从类型分为beta版、rc版和正式版。

beta版表示测试版;rc表示发布候选预览版;rc1则表示第一个维护版本的发布预览版,rc2则表示第二个候选发行版是正式版最终发布前的最后检查。

因此我们根据自己的情况选择64位Windows平台的正式版,即上图所示的安装包,下载地址:

https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-amd64.zip

下载完成之后我们就可以解压安装包了:

image-20210715114158292

解压后的python非常纯净,连pip都没有,现在我们需要安装pip:

安装pip

在https://pip.pypa.io/en/stable/installing/下我们可以找到get-pip.py脚本的下载链接:

image-20210715114718023

下载地址:https://bootstrap.pypa.io/get-pip.py

我们将其下载到前面解压的python目录下,在Windows命令行的操作方式是:

certutil -urlcache -split -f https://bootstrap.pypa.io/get-pip.py

然后执行安装pip:

python get-pip.py

image-20210715115613473

安装完成后,python路径下增加了两个文件夹。可以在Scripts目录下找到安装好的pip文件:

image-20210715115942449

用winhex打开可以看到其实4个文件的内容完全一样。

为了增加pip的通用性,我们可以用Sublime等文本编辑器打开pip.exe文件,修改python所在的路径(我使用的是notepad++):

image-20210715134438977

拖到底可以看到原本的python路径是一个绝对路径。下面我们改成相对路径,方便我们将绿化版python移动到任何地方后都可以使用pip安装库。

打算以后直接在pip所在路径下执行pip命令,那么python就位于相对于当前目录的上级目录中,所所以我改成了..\python.exe

image-20210715135601949

但这时我们还无法正常使用pip,会出现如下问题:

E:\tmp\python-3.7.4-embed-amd64\Scripts>pip
Traceback (most recent call last):
  File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 193, in _run_module_as_main
  File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 85, in _run_code
  File "E:\tmp\python-3.7.4-embed-amd64\Scripts\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

这时我们需要修改python根目录的下的python37._pth文件,同样使用文本编辑器打开,取消import site的注释即可。修改完成后如下:

image-20210715135859976

此时再次执行pip:

E:\tmp\python-3.7.4-embed-amd64\Scripts>pip list
Package    Version
---------- -------
pip        21.1.3
setuptools 57.1.0
wheel      0.36.2

至此pip已经可以用来安装常用的包了。

添加项目目录到默认模块搜索路径

后面我们的绿化版python是打算放在项目根目录下面,为了能够将项目根目录加入模块默认搜索路径中,所以上面的python37._pth文件再增加..表示上级目录,修改后:

image-20210715155818277

绿化版python安装tkinter

这步并没有啥可以直接安装的方案,经过一番研究,我们可以把安装版中的tkinter相关文件都copy到当前的项目目录下。

下面操作前,先将python-3.7.4-embed-amd64重命名为py374。

需要将以下2个目录3个文件复制到py374根目录下:

  1. 安装版python的tcl目录
  2. 安装版python的Lib\tkinter目录
  3. 安装版python的DLLs目录下的tcl86t.dll、tk86t.dll和_tkinter.pyd三个文件

image-20210715162207347

复制后:

image-20210715162326693

测试一下:

image-20210715163833534

可以看到在绿化版python中能够正常使用tk。

至此我们的绿化版python就制作完成,可以随项目一起打包。当前最纯净的状态可以收藏起来备份,随时copy到新项目中。也可以按照同样的思路制作其他版本的绿化版python。

绿化版python下载地址

为了大家方便我将上面已经做好的绿化版python分享出来,可以在下面地址下载:

链接:百度网盘 请输入提取码
提取码:rcyz

使用示例

库安装

在制作好Windows平台的绿化版python后,我们就可以尝试使用它对某个项目打包了,这里我们以前面写的抽奖程序为例来操作。

这个小项目就两个文件,将前面做好的绿化版python放于项目根目录下:

image-20210715141739449

然后进入项目python中的pip所在文件夹安装程序所需要的库:

pip install PySimpleGUI

image-20210715142557361

于是我们可以先尝试直接运行一下:

image-20210715170830466

可以看到通过绿化版python程序正常运行。

vbs运行脚本

至此我们可以封装一个vbs脚本run.vbs,内容如下:

Set ws = CreateObject("WScript.Shell")
ws.Run "py374\pythonw lottery_draw.py"

然后用户只需直接双击打开run.vbs文件即可直接运行程序:

注意:pythonw命令相对于python命令不会产生多余的黑窗界面。

bat脚本转exe

如果更喜欢exe格式或希望自定义程序图标,还可以写bat脚本,然后通过一些工具转成exe。

首先编写bat脚本run.bat,内容如下:

py374\pythonw lottery_draw.py

然后打开Bat_To_Exe_Converter工具(百度一下有很多网址可以下载):

image-20210715173950459

然后就得到了自定义图标的exe文件:

image-20210715174702185

双击exe正常运行,打开速度几乎与直接用python命令运行一致。

编译pyc文件打包

上面的打包方法直接带上python源代码可能并不是太好,这时候我们可以把项目下的所有py脚本都编译成pyc。

一次性全部编译的命令是:

python -m compileall .

编译后每个子文件夹下面都会产生一个__pycache__目录:

]

这个项目只有两个文件,我们可以人工的移动并修改文件名。考虑到一个项目文件可能很多,想要全部都编译的话,可以使用py脚本编译并批量重命名:

"""
小小明的代码
CSDN主页:https://blog.csdn.net/as604049322
"""
__author__ = '小小明'

import compileall

compileall.compile_dir('.')
from pathlib import Path
import os
import shutil

files = Path(".").glob("**/__pycache__/*.pyc")
if os.path.exists("pycfiles"):
    shutil.rmtree("pycfiles")
os.makedirs("pycfiles")
for file in files:
    pyc_name = file.name[:file.name.find(".")] + ".pyc"
    if pyc_name == Path(__file__).name+"c":
        continue
    floder = file.parent.parent
    if not os.path.exists(f"pycfiles/{floder}"):
        os.mkdir(f"pycfiles/{floder}")
    pyc_name = f"pycfiles/{floder}/{pyc_name}"
    print(file, '->', pyc_name)
    os.rename(file, pyc_name)

将该脚本放到项目目录下运行后,将得到一个pycfiles目录:

]

此时我们可以将绿化版python复制到pycfiles目录下:

然后编写bat运行脚本:

py374\pythonw lottery_draw.pyc

然后使用Bat_To_Exe_Converter工具生成exe。之后bat脚本也可以删除了。

运行效果:

动画

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值