Python 虚拟环境 + 嵌入式 部署方案

发布于:2024-06-11 ⋅ 阅读:(135) ⋅ 点赞:(0)

开发阶段

1. 在虚拟环境下开发 Python 项目

在开发电脑上,我们使用虚拟环境来开发我们的Python项目。
目的就是把所有此项目所需的第三方库,安装在一个单独的虚拟环境中。
方便一波带走。

部署阶段

接来下我们来到需要部署的客户电脑,以嵌入式Python解释进行我们的代码。
这样适应于一些不能安装Python的情况。
以下步骤适应离线部署,因为我们所有东西都是打包直接复制过去的,不需要通过网络再获取其它东西。
当然我这个项目比较简单,如果用了一个刁钻的依赖,可能还要在此基础上,单独处理一下。

1. 创建项目文件夹

先创建个空文件 my_project 来放整个项目:(当然名称随意)

  1. Python解释器
  2. 项目代码
  3. 启动bat文件
  4. 其它相关文件

2. 准备嵌入器 Python 解释器

  1. 解压 python-3.11.5-embed-amd64.zippython-3.11.5-embed-amd64 放到 my_project 目录
  2. 嵌入式Python的版本最好和我们开发环境的版本保持一至。
  3. 我偷懒不改名了,大家可以随意改成 python-3.11.5py3115-embed。。。

3. 处理第三方库

将开发机虚拟环境下的 site-packages 目录复制到 my_project 目录中
3.1. venv\Lib\site-packages中就是虚拟环境下安装的第三方库

4. 修改 ._pth 文件添加 Python 运行环境

修改 python-3.11.5-embed-amd64 目录下的 python311._pth 文件内容,加入一些所需路径。
311 对应 python 的版本,版本不同文件名会不一样。

  • 修改前
    python311.zip
    .
    
    # Uncomment to run site.main() automatically
    #import site
    
  • 修改后
    python311.zip
    .
    # 这是 my_project
    ..
    # 这里面是我们项目代码
    ..\src
    # 这是虚拟环境下的第三方库
    ..\site-packages
    # 这里去掉注释
    import site
    
    注意: 这里只要这里相对路径指对就行了。可以按自己需要调整目录解构。

5. 添加启动 bat 脚本

@echo off
chcp 65001
python-3.11.5-embed-amd64\python.exe src\main.py
pause
  1. my_project 创建批处理 run.bat 用嵌入式的 python-3.11.5-embed-amd64\python.exe 来执行 py
  2. chcp 65001 是使用 utf-8 编码,解决批处理中文乱码问题。

最终目录结构

my_project 根目录
│  run.bat 启动脚本
│  
├─python-3.11.5-embed-amd64 # 嵌入式 Python 解释器
│     嵌入式 Python 相关文件
│      
├─site-packages # 虚拟环境下安装好的第三方库目录
│ └─  虚拟环境下安装好的第三方库文件
│          
└─src
    │  main.py
    │  __init__.py
    │  
    └─package # 自定义包
         │  __init__.py
         ├─service
         │   __init__.py
         │  └─ 业务代码
         │          
         └─utils
         	│  __init__.py
        	└─ 工具类

参考资料

Python Releases for Windows