ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【Python】绿色便携版Python制作(发布)方法

【Python】绿色便携版Python制作(发布)方法

1 背景

写了python脚本,却无法分享给没有安装python环境的同事,将脚本打包成exe又比较麻烦,尤其是脚本依赖很多第三方库的时候,打包exe就更麻烦了。有什么好方法么?

文章最后有打包好的绿色可移植(嵌入)的Python运行环境,欢迎下载使用。

2 一种方案

经过测试,使用embed版的python是个可行方案。

2.1 下载嵌入版Python(embed Python)

在Python官网有各个平台的embed版本python包。

这里使用 Python 3.8.10 版本为例。虽然该版本较旧,但为了在32位Win7电脑上使用python脚本,它是最后一个支持win7的版本了。

https://www.python.org/downloads/release/python-3810/

在网页中找到【Windows embeddable package (32-bit)】 ,下载后是个文件夹,这就是嵌入版python的全部了。

2.2 设置运行环境

2.2.1 添加临时环境变量

在文件夹中创建bat文件 run.bat,内容为:

@echo off REM 将目录添加到 PATH 环境变量,建议加在path最前,防止被已有python遮蔽 REM %~dp0表示当前目录,含反斜线 \ set path=;%~dp0;%~dp0Scripts;%path%; REM echo Current Env: %~dp0 REM 设置当前目录为工作目录 cd /d %~dp0 REM 打印python版本 python --version pause

python版本应显示 3.8.10,即我们的嵌入式python的版本号。

若能正确显示python版本,说明python运行环境已设置正确。

2.2.2 运行python脚本

文件夹中创建 main.py,内容如下:

print("hello, python!")

修改下刚才的run.bat,增加一行:

python main.py

即:

@echo off REM 将目录添加到 PATH 环境变量,建议加在path最前,防止被已有python遮蔽 REM %~dp0表示当前目录,含反斜线 \ set path=;%~dp0;%~dp0Scripts;%path%; REM echo Current Env: %~dp0 REM 设置当前目录为工作目录 cd /d %~dp0 REM 打印python版本 python --version python main.py pause

双击运行 run.bat。

若一切正常,应显示

hello, python!

2.2.3 优化——建立自己的工作目录

自己创建的两个文件run.bat和main.py和python本身的文件放在一起,显得杂乱。

我们把自己的文件整理到新建文件夹中,命名为mycode。

文件结构:

  • embed-python\mycode\run.bat
  • embed-python\mycode\main.py

这时要修改 run.bat 中的内容。

因为Python的环境在上级目录中,所以要上级目录(%~dp0..)添加到环境变量中。但是python脚本在本级目录,所以要打开当前目录作为工作目录(使用 cd /d %~dp0)。

@echo off REM 将上级目录添加到 PATH 环境变量 set path=;%~dp0..;%~dp0..Scripts;%path%; REM 设置当前目录为工作目录 cd /d %~dp0 python main.py pause

这样,双击 run.bat 即可执行python脚本。

这样,以后要运行其他功能的脚本时,复制mycode文件夹,修改为其它名称即可,各文件夹间的脚本运行互不影响。

2.3 安装第三方库

Python之所以强大,是可以方便的利用优秀的第三方库。

嵌入版Python如何安装第三方库呢?

使用 get-pip.py。(此处参考博文:探秘Python安装神器:get-pip-CSDN博客)

get-pip.py是一个引导脚本,用于在没有预装 pip、setuptools 和 wheel 的 Python 环境中安装这些工具。

详细步骤如下:(以下python命令均需要先按前文讲到的设置好环境变量后运行)

1. 下载 get-pip.py 文件。[参考1,参考2,参考3]

2. 用记事本修改 python38._pth,将import site前的#号去掉,因为嵌入式版本,默认开启隔离模式,不会加载 site-packages。

3. 使用下面命令运行该脚本,此脚本会为嵌入式Python安装pip工具。

python get-pip.py

使用命令 python -m pip list,查看已经安装的库,如果有显示,说明pip工具已正确安装。

4. 有了pip工具,就可使用下面命令安装任意的第三方库。

python -m pip install xxx -i https://mirrors.aliyun.com/pypi/simple

第三方库会自动保存到嵌入版文件夹的 Lib\site-packages 文件夹中。

3 结语

这样,我们可以通过替换不同版本的python环境,就能便捷的替换Python版本,分享给不同操作系统、不同位数的电脑运行。

好处:

1. 灵活使用各个版本的python ;

2. 快速的分享python脚本;

3. 随处运行python脚本。

4 下载

打包文件内含适用于win7_x64即32位win7嵌入版python官方包,以及已安装好的嵌入版pip工具,及已安装好的第三方库:pandas等,可下载直接双击mycode\run.bat运行python脚本,方便实用。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进