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

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

  • 开发阶段
    • 1. 在虚拟环境下开发 Python 项目
  • 部署阶段
    • 1. 创建项目文件夹
    • 2. 准备嵌入器 Python 解释器
    • 3. 处理第三方库
    • 4. 修改 ._pth 文件添加 Python 运行环境
  • 5. 添加启动 bat 脚本
  • 最终目录结构
  • 参考资料

开发阶段

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

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

部署阶段

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

1. 创建项目文件夹

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

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

2. 准备嵌入器 Python 解释器

  1. 解压 python-3.11.5-embed-amd64.zip 为 python-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 寿光蔬菜大棚宣传平台-计算机毕业设计源码88288

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于寿光蔬菜大棚宣传平台当然也不能排除在外,随着网络技术的不断成熟,带动了寿光蔬菜大棚宣传平台,它彻底…

ISO 19115-2:2019 附录C XML 模式实现

C.1 XML 模式 本文件中定义的 UML 模型的 XML 模式在 ISO/TS 19115-3 中定义的适当 XML 命名空间中提供。新增内容包括: 命名空间前缀模式文件名Metadata for ACquisition (mac)acquisitionInformationImagery.xsdMetadata for Resource Content (mrc)contentInformationImag…

BPF:BCC(BPF Compiler Collection)工具集认知

写在前面 博文内容为 《BPF Performance Tools》 读书笔记整理内容涉及 BCC 工具整体介绍理解不足小伙伴帮忙指正 😃,生活加油 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村…

内存EDAC在AMD异构场景的应用

在异构系统中,AMD通过将CPU与GPU的数据织物网络通过定制的xGMI链接连接,实现了统一访问,使得GPU节点的数据织物网络如同CPU节点一样可访问。这样的设计使得系统能够高效地整合CPU与GPU资源,提升数据处理速度和效率,特别…

从河流到空气,BL340工控机助力全面环保监测网络构建

在环保监测领域,智能化、高效率的监测手段正逐步成为守护绿水青山的新常态。其中,ARMxy工业计算机BL340凭借其强大的处理能力、高度的灵活性以及广泛的兼容性,在水质监测站、空气质量检测、噪音污染监控等多个环保应用场景中脱颖而出&#xf…

MySQL深分页优化

MySQL中的深分页问题通常是指当我们通过LIMIT语句查询数据,尤其是在翻到较后面的页码时,性能会急剧下降。例如,查询第1000页的数据,每页10条,系统需要跳过前9990条数据,然后才能获取到所需的记录&#xff0…

Vue基础面试题(一)

1.Vue的基本原理 Vue.js的核心原理在于其响应式的数据绑定机制,当创建一个Vue实例时,Vue会遍历每个属性,用Object.defineProperty转化为getter和setter。这样使得Vue可以追踪属性的变化,在属性被修改和访问时通知变化。每个组件也…

PostgreSQL的视图pg_tables

PostgreSQL的视图pg_tables pg_tables 是 PostgreSQL 中的一个系统视图,用于显示当前数据库中所有用户定义的表的信息。这个视图提供了关于表的名称、所属模式(schema)、所有者以及表类型等详细信息。 pg_tables 视图的主要列 列名类型描述…

如何提高个人和企业的网络安全意识?

提高个人网络安全意识 个人可以通过以下方式提高网络安全意识: 1. 加强教育和培训:参加网络安全培训课程,学习识别网络攻击的常见迹象、安全密码的设置、不点击可疑链接等知识。 2. 建立网络安全政策:制定个人网络安全规则&…

【Linux】进程3——PID/PPID,父进程,子进程

在讲父子进程之前,我们接着上面那篇继续讲 1.查看进程 mycode.c makefile 我们在zs_108直接编译mycode.c,直接运行,然后我们转换另一个账号来查看这个进程 我们可以通过ps指令来查看进程 我们就会好奇了,第二行是什么&#xff…

基于JavaScript 实现近邻算法以及优化方案

前言 近邻算法(K-Nearest Neighbors,简称 KNN)是一种简单的、广泛使用的分类和回归算法。它的基本思想是:给定一个待分类的样本,找到这个样本在特征空间中距离最近的 k 个样本,这 k 个样本的多数类别作为待…

【C++】<知识点> C++11新特性

文章目录 一、auto关键字 二、decltype关键字 三、nullptr关键字 四、智能指针 五、 无序容器(哈希表) 六、统一的初始化方法 七、成员变量默认初始值 八、范围for循环 九、右值引用与移动语义 十、lambda表达式 一、auto关键字 1. 作用&#…

Linux shell编程学习笔记58:cat /proc/mem 获取系统内存信息

0 前言 在开展系统安全检查的过程中,除了收集cpu信息,我们还需要收集内存信息。在Linux中,获取内存信息的命令很多,这里我们着重研究 cat /proc/mem命令。 1 cat /proc/mem命令 /proc/meminfo 文件提供了有关系统内存的使用情况…

280 基于matlab的摇号系统GUI界面仿真MATLAB程序

基于matlab的摇号系统GUI界面仿真MATLAB程序,输入总数量及摇号需求,进行随机性摇号,并对摇取的号码进行双重随机性数据检测,确定是否符合要求。程序已调通,可直接运行。 280 GUI人机交互 摇号系统GUI界面仿真 - 小红书…

技术前沿 |【大模型InstructBLIP进行指令微调】

大模型InstructBLIP进行指令微调 一、引言二、InstructBLIP模型介绍三、指令微调训练通用视觉语言模型的应用潜力四、InstructBLIP的指令微调训练步骤五、实验结果与讨论六、结论与展望 一、引言 随着人工智能技术的快速发展,视觉语言模型(Vision-Langu…

使用SourceTree切换不同的托管平台

背景:sourcetree一开始绑定了gitee,想拉取github的项目时拉取不了 原因:git绑定的账号(邮箱)、密码不一致 解决办法: 重新设置账号密码 在windows种可找到下面的文件夹,进行删除 C:\Users\US…

5.1 实体完整性

一个表只能有一个主键约束,且主键约束不能取空值。 通过unique约束定义唯一性,为了保证一个表非主键列不输入重复值,可在该列定义unique约束。 primary key约束与unique约束主要区别如下。 (1)一个表只能创建一个primary key约束&#xff0…

让GNSSRTK不再难【第一天】

第1讲 GNSS系统组成以及应用 北斗导航科普动画_哔哩哔哩_bilibili 1.1 GNSS系统 1.1.1 基本概念 全球卫星导航系统(Global Navigation Satellite System, GNSS),是能在地球表面或近地空间的任何地点为用户提供全天候的三维坐标、速度以及…

STM32-电灯,仿真

目录 前言: 一. 配置vscode 二. 新创建软件工程 三. 仿真 1.新建工程想到,选择名称和路径 2.从选中的模板创建原理图 3.不创建PCB布版设计 4.选择没有固件项目 5.完成 四.源码 五. 运行效果 六. 总结 前言: 这篇主要是配置vscode和创建仿真,和点灯的完整代码,欢迎大…

在Windows上用Llama Factory微调Llama 3的基本操作

这篇博客参考了一些文章,例如:教程:利用LLaMA_Factory微调llama3:8b大模型_llama3模型微调保存-CSDN博客 也可以参考Llama Factory的Readme:GitHub - hiyouga/LLaMA-Factory: Unify Efficient Fine-Tuning of 100 LLMsUnify Effi…