使用Python embeddable package 版(嵌入式、绿色版)分发自己的python程序

1、Python embeddable package 版介绍

https://www.python.org/downloads/windows/ Download Windows embeddable package (32-bit)

这个版本又称为嵌入式版,绿色版。该版本就是一个zip压缩包,解压缩之后得到一个文件夹,该文件夹包含了一个最小python运行环境(不包括doc、idle、pip等)。

该版本主要用途有:

  • 嵌入其他程序之中
  • 与系统python环境隔离
  • 方便分发我们的脚本

该版可以方便的在python官网下载得到,下载后将其解压到想要的目录即可。

2、配置包导入搜索路径

该版本默认的包导入搜索路径由根目录内 pythonXX._pth (XX为版本号)文件决定,该文件默认内容如下:

python38.zip
.
# Uncomment to run site.main() automatically
#import site

也就是说默认情况下该python环境只会从python38.zip.(该环境根目录)搜索可导入的包。可以根据自己的需要,手动修改该文件来配置包导入搜索路径。
在实际使用过程中,我们一般将该环境的目录作为我们程序的子目录。为了能正确导入我们程序目录内的自定义模块,只需要在pythonXX._PTH文件中添加..,即该环境目录的上级目录。

3、使用第三方库

使用第三方库有如下两种思路。

3.1 手动复制第三方库

把自己程序用到的第三方库复制到指定文件夹,并把该文件夹配置到pythonXX._pth 文件即可。

3.2 使用pip安装第三方库

由于该环境不集成pip包,所以需要手动安装。
首先下载get-pip.py脚本,可以参考官方教程:https://pip.pypa.io/en/stable/installation。
打开Windows命令行,cd到该python环境根目录,执行python get-pip.py,会自动下载并安装pip包。
pip安装完成后,会自动在该环境根目录创建Lib\site-packagesScripts文件夹,分别包含通过pip安装的第三方包和pip工具本身。
但是,此时第三方包所在的目录并未加入到包导入搜索路径里。
可以手动修改pythonXX._pth文件,添加一行:

Lib\site-packages

也可以,把pythonXX._pth文件里的#import site前的#删除。即在该环境初始化时,导入site模块,该模块会附加特定的路径到包导入搜索路径并且添加一些内建对象,其中就包括python环境根目录的site-packgages路径。
现在,就可以通过 pip来安装第三方库。
但是由于此时我们并没有设置系统环境变量,不能直接执行pip install 命令。我们只能cd到该环境根目录,用python -m pip install命令来安装。

4、分发程序

现在我们把程序连同python环境一同打包给别人,别人并无法运行。因为我们没有配置环境变量。
但是我们并不能奢求别人会配置环境变量。而应该应尽量让自己的程序包像绿色软件一样,解压即可直接运行。要做到这一步,我们可以借助windows批处理脚本来完成。
新建一个bat批处理文件,在这个批处理文件里,我们首先添加相关目录到系统环境变量,然后执行python yourscript.py,下面是一个例子:

@echo off
set path=%path%;%cd%\python;
python yourscript.py

在这个批处理里%path%指系统原本的环境变量,%cd%指当前目录。多个环境变量路径用;分割。
如果想在批处理命令里用pip安装第三方包,请使用python -m pip install命令,单纯的pip命令会在整体文件夹路径发生改变的时候出错。
这里添加的系统环境变量是临时的,只对当前命令行有效。

这样以来,别人就可以通过双击批处理命令文件来打开我们的程序了。

你可能感兴趣的:(python,开发语言)