Python 虚拟环境 + 嵌入式 部署方案
- 开发阶段
- 1. 在虚拟环境下开发 Python 项目
- 部署阶段
- 1. 创建项目文件夹
- 2. 准备嵌入器 Python 解释器
- 3. 处理第三方库
- 4. 修改 ._pth 文件添加 Python 运行环境
- 5. 添加启动 bat 脚本
- 最终目录结构
- 参考资料
开发阶段
1. 在虚拟环境下开发 Python 项目
在开发电脑上,我们使用虚拟环境来开发我们的Python项目。
目的就是把所有此项目所需的第三方库,安装在一个单独的虚拟环境中。
方便一波带走。
部署阶段
接来下我们来到需要部署的客户电脑,以嵌入式Python解释进行我们的代码。
这样适应于一些不能安装Python的情况。
以下步骤适应离线部署,因为我们所有东西都是打包直接复制过去的,不需要通过网络再获取其它东西。
当然我这个项目比较简单,如果用了一个刁钻的依赖,可能还要在此基础上,单独处理一下。
1. 创建项目文件夹
先创建个空文件 my_project
来放整个项目:(当然名称随意)
- Python解释器
- 项目代码
- 启动bat文件
- 其它相关文件
2. 准备嵌入器 Python 解释器
- 解压 python-3.11.5-embed-amd64.zip 为
python-3.11.5-embed-amd64
放到my_project
目录 - 嵌入式Python的
版本
最好和我们开发环境的版本保持一至。 - 我偷懒不改名了,大家可以随意改成
python-3.11.5
,py3115-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
- 在
my_project
创建批处理run.bat
用嵌入式的python-3.11.5-embed-amd64\python.exe
来执行 py 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