当前位置: 首页 > news >正文

一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说,可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户,特别是不熟悉Python的人来说,这样过于繁琐。因此最好的办法是连同Python解释器和Python项目打包在一起,通过嵌入式一键整合包解决项目的分发问题。

本次我们以一键扒谱的项目为例子,演示如何将项目直接打包为一键整合包,方便其他用户运行使用。

嵌入式Python处理

首先克隆我们自己的项目:

git clone https://github.com/v3ucn/YiJianBaPu.git

正常流程是通过pip安装项目的依赖。

但现在我们不直接通过pip安装依赖,而是通过嵌入式的安装包。

进入Python官方的下载页面:

https://www.python.org/downloads/windows/

下载Windows embeddable package (64-bit)安装包,注意是embeddable版本的,并不是传统安装包,同时版本也需要和开发项目的Python版本吻合:

随后将其解压到项目的根目录,并且下载get-pip.py文件,放入到刚刚解压的安装包内,下载地址:

https://bootstrap.pypa.io/get-pip.py

放入之后的目录结构如下:

D:\work\YiJianBaPu\python310>tree /f  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  get-pip.py  libcrypto-1_1.dll  libffi-7.dll  libssl-1_1.dll  LICENSE.txt  pyexpat.pyd  python.cat  python.exe  python3.dll  python310.dll  python310.zip  python310._pth  pythonw.exe  select.pyd  sqlite3.dll  unicodedata.pyd  vcruntime140.dll  vcruntime140_1.dll  winsound.pyd  _asyncio.pyd  _bz2.pyd  _ctypes.pyd  _decimal.pyd  _elementtree.pyd  _hashlib.pyd  _lzma.pyd  _msi.pyd  _multiprocessing.pyd  _overlapped.pyd  _queue.pyd  _socket.pyd  _sqlite3.pyd  _ssl.pyd  _uuid.pyd  _zoneinfo.pyd

随后在项目的根目录执行命令:

.\python310\python.exe .\python310\get-pip.py

注意这里的python.exe并不是本地开发环境的Python,而是嵌入式解释器的Python。

此时我们的目录中多出两个文件夹Lib和Scripts:

D:\work\YiJianBaPu\python310>tree  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  
├───Lib  
│   └───site-packages  
│       ├───pip  
│       │   ├───_internal  
│       │   │   ├───cli  
│       │   │   │   └───__pycache__  
│       │   │   ├───commands  
│       │   │   │   └───__pycache__  
│       │   │   ├───distributions  
│       │   │   │   └───__pycache__  
│       │   │   ├───index  
│       │   │   │   └───__pycache__  
│       │   │   ├───locations  
│       │   │   │   └───__pycache__  
│       │   │   ├───metadata  
│       │   │   │   ├───importlib  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───models  
│       │   │   │   └───__pycache__  
│       │   │   ├───network  
│       │   │   │   └───__pycache__  
│       │   │   ├───operations  
│       │   │   │   ├───build  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───install  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───req  
│       │   │   │   └───__pycache__  
│       │   │   ├───resolution  
│       │   │   │   ├───legacy  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───resolvelib  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───utils  
│       │   │   │   └───__pycache__  
│       │   │   ├───vcs  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───cachecontrol  
│       │   │   │   ├───caches  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───certifi  
│       │   │   │   └───__pycache__  
│       │   │   ├───chardet  
│       │   │   │   ├───cli  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───metadata  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───colorama  
│       │   │   │   ├───tests  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───distlib  
│       │   │   │   └───__pycache__  
│       │   │   ├───distro  
│       │   │   │   └───__pycache__  
│       │   │   ├───idna  
│       │   │   │   └───__pycache__  
│       │   │   ├───msgpack  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───pkg_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───platformdirs  
│       │   │   │   └───__pycache__  
│       │   │   ├───pygments  
│       │   │   │   ├───filters  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───formatters  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───lexers  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───styles  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───pyparsing  
│       │   │   │   ├───diagram  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───pyproject_hooks  
│       │   │   │   ├───_in_process  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───requests  
│       │   │   │   └───__pycache__  
│       │   │   ├───resolvelib  
│       │   │   │   ├───compat  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───rich  
│       │   │   │   └───__pycache__  
│       │   │   ├───tenacity  
│       │   │   │   └───__pycache__  
│       │   │   ├───tomli  
│       │   │   │   └───__pycache__  
│       │   │   ├───truststore  
│       │   │   │   └───__pycache__  
│       │   │   ├───urllib3  
│       │   │   │   ├───contrib  
│       │   │   │   │   ├───_securetransport  
│       │   │   │   │   │   └───__pycache__  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───packages  
│       │   │   │   │   ├───backports  
│       │   │   │   │   │   └───__pycache__  
│       │   │   │   │   └───__pycache__  
│       │   │   │   ├───util  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───webencodings  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───pip-23.3.1.dist-info  
│       ├───pkg_resources  
│       │   ├───extern  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───importlib_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───jaraco  
│       │   │   │   ├───text  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───more_itertools  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───platformdirs  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───setuptools  
│       │   ├───command  
│       │   │   └───__pycache__  
│       │   ├───config  
│       │   │   ├───_validate_pyproject  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───extern  
│       │   │   └───__pycache__  
│       │   ├───_distutils  
│       │   │   ├───command  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   ├───_vendor  
│       │   │   ├───importlib_metadata  
│       │   │   │   └───__pycache__  
│       │   │   ├───importlib_resources  
│       │   │   │   └───__pycache__  
│       │   │   ├───jaraco  
│       │   │   │   ├───text  
│       │   │   │   │   └───__pycache__  
│       │   │   │   └───__pycache__  
│       │   │   ├───more_itertools  
│       │   │   │   └───__pycache__  
│       │   │   ├───packaging  
│       │   │   │   └───__pycache__  
│       │   │   ├───tomli  
│       │   │   │   └───__pycache__  
│       │   │   └───__pycache__  
│       │   └───__pycache__  
│       ├───setuptools-68.2.2.dist-info  
│       └───_distutils_hack  
│           └───__pycache__  
└───Scripts

随后修改python310._pth文件,将内容改成下面这样:

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

至此,嵌入式解释器就配置好了。

嵌入式安装依赖

此后,当我们需要安装依赖时,必须用嵌入式的解释器进行安装:

.\python310\python.exe -m pip install noisereduce -t E:\work\YiJianBaPu\python310\Lib\site-packages

上面的命令展示如何嵌入式安装依赖库noisereduce。

这里需要注意的时,解释器必须是嵌入式解释器.\python310\python.exe,同时通过-t参数来指定三方库的位置,也就是说,必须安装到项目的目录中,而不是系统的默认开发环境目录。

安装成功后,我们必须可以在项目的目录下可以找到这个库:

D:\work\YiJianBaPu\python310\Lib\site-packages>tree  
Folder PATH listing for volume 新加卷  
Volume serial number is 9824-5798  
D:.  
├───noisereduce  
│   ├───spectralgate  
│   │   └───__pycache__  
│   ├───torchgate  
│   │   └───__pycache__  
│   └───__pycache__

如此,依赖和解释器就紧密结合在一起了,换台机器,并不需要安装也可以直接启动。

一键启动

现在,我们来编写一键启动脚本,launch.bat文件:

@echo off  
chcp 65001  
@echo 开始运行  
call .\python310\python.exe -m spleeter separate -p spleeter:2stems -o ./output ./test.mp3  
call .\python310\python.exe ./infer.py --model ./ckpt/model_ckpt_steps_104000_simplified.ckpt --wav ./output/test/vocals.wav  
@echo 处理完毕,请按任意键  
call pause

这里chcp命令用来声明编码,防止中文提示乱码。

call用来执行脚本,注意解释器必须使用项目内置的嵌入式解释器.\python310\python.exe

随后双击执行脚本launch.bat,程序返回:

Active code page: 65001  
开始运行  
INFO:spleeter:File ./output\test/vocals.wav written succesfully  
INFO:spleeter:File ./output\test/accompaniment.wav written succesfully  
accumulate_grad_batches: 1, audio_sample_rate: 44100, binarization_args: {'num_workers': 0, 'shuffle': True}, binarizer_cls: preprocessing.MIDIExtractionBinarizer, binary_data_dir: data/some_ds_fixmel_spk3_aug8/binary,  
clip_grad_norm: 1, dataloader_prefetch_factor: 2, ddp_backend: nccl, ds_workers: 4, finetune_ckpt_path: None,  
finetune_enabled: False, finetune_ignored_params: [], finetune_strict_shapes: True, fmax: 8000, fmin: 40,  
freezing_enabled: False, frozen_params: [], hop_size: 512, log_interval: 100, lr_scheduler_args: {'min_lr': 1e-05, 'scheduler_cls': 'lr_scheduler.scheduler.WarmupLR', 'warmup_steps': 5000},  
max_batch_frames: 80000, max_batch_size: 8, max_updates: 10000000, max_val_batch_frames: 10000, max_val_batch_size: 1,  
midi_extractor_args: {'attention_drop': 0.1, 'attention_heads': 8, 'attention_heads_dim': 64, 'conv_drop': 0.1, 'dim': 512, 'ffn_latent_drop': 0.1, 'ffn_out_drop': 0.1, 'kernel_size': 31, 'lay': 8, 'use_lay_skip': True}, midi_max: 127, midi_min: 0, midi_num_bins: 128, midi_prob_deviation: 1.0,  
midi_shift_proportion: 0.0, midi_shift_range: [-6, 6], model_cls: modules.model.Gmidi_conform.midi_conforms, num_ckpt_keep: 5, num_sanity_val_steps: 1,  
num_valid_plots: 300, optimizer_args: {'beta1': 0.9, 'beta2': 0.98, 'lr': 0.0001, 'optimizer_cls': 'torch.optim.AdamW', 'weight_decay': 0}, pe: rmvpe, pe_ckpt: pretrained/rmvpe/model.pt, permanent_ckpt_interval: 40000,  
permanent_ckpt_start: 200000, pl_trainer_accelerator: auto, pl_trainer_devices: auto, pl_trainer_num_nodes: 1, pl_trainer_precision: 32-true,  
pl_trainer_strategy: auto, raw_data_dir: [], rest_threshold: 0.1, sampler_frame_count_grid: 6, seed: 114514,  
sort_by_len: True, task_cls: training.MIDIExtractionTask, test_prefixes: None, train_set_name: train, units_dim: 80,  
units_encoder: mel, units_encoder_ckpt: pretrained/contentvec/checkpoint_best_legacy_500.pt, use_buond_loss: True, use_midi_loss: True, val_check_interval: 4000,  
valid_set_name: valid, win_size: 2048  
| load 'model' from 'ckpt\model_ckpt_steps_104000_simplified.ckpt'.  
100%|████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:01<00:00,  1.88it/s]  
处理完毕,请按任意键  
Press any key to continue . . .

可以看到,执行结果和传统终端执行的结果是一致的。

区别是使用者并不需要本地配置Python环境,只需要下载项目的整合包即可。

结语

通过嵌入式打包,可以把Python程序和解释器、依赖库一并打包分发给非专业用户,由此就提高了这部分用户群体的使用体验,最后奉上打包后的整合包,以飨众乡亲:

链接:https://pan.baidu.com/s/1HN3LAusdtofwqtb4gnSwvQ?pwd=72yq

相关文章:

一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

我们知道Python是一门解释型语言&#xff0c;项目运行时需要依赖Python解释器&#xff0c;并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说&#xff0c;可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户&#xff0c;特别是不熟悉Py…...

MAC地址注册的网络安全影响和措施分析

MAC地址注册对网络安全具有重要影响&#xff0c;同时也需要采取相应的措施来应对潜在的安全风险。以下是有关MAC地址注册的网络安全影响和应对措施的分析&#xff1a; 影响&#xff1a; 1. 身份验证&#xff1a;MAC地址注册可用于设备的身份验证&#xff0c;但MAC地址本身并不…...

某个订单项目记录,涉及MQ消息处理、分布式问题、幂等性等问题解决设计

文章目录 消息队列&#xff08;Message Queue&#xff09;什么场景下&#xff0c;使用消息队列&#xff1f;消息队列 概述 RabbitMQ 消息队列RabbitMQ 概念名词 概念RabbitMQ 流程 RabbitMQ 安装RabbitMQ 页面介绍Exchange 交换机类型Spring Boot 整合RabbitMQAmqpAdmin 与 Rab…...

excel中的OFFSET函数

介绍 OFFSET函数是确定从基点出发移动后的引用区域。它有5个参数&#xff1a; 第1个参数是引用的参考基点区域第2个参数是移动的行数&#xff0c;正数代表向下移动的行数&#xff0c;负数代表向上移动的行数第3个参数是移动的列数&#xff0c;正数代表向右移动的列数&#xf…...

力扣:168. Excel表列名称(Python3)

题目&#xff1a; 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&…...

短视频账号矩阵系统源码/技术源码分享/技术搭建架构

短视频账号矩阵系统----技术源码分享/技术搭建架构 抖音seo又叫抖音搜索引擎&#xff0c;只要能做到布词&#xff0c;和过去的百度seo优化一样&#xff0c;布词&#xff0c;布关键词&#xff0c;当搜索栏搜索时可以搜索到该短视频。优化视频关键词&#xff0c;做好关键词的优化…...

Nginx负载均衡时,验证码老是错误

问题 正式环境里&#xff0c;登录之后没有跳转到之前的页面&#xff0c;在测试服务器上测试了一下这个BUG&#xff0c;不存在这个问题 问题原因 我们的服务器做了负载均衡&#xff0c;问题出现之后&#xff0c;就问了运维&#xff0c;负载均衡的规则是什么&#xff0c;默认情况…...

Unity3D ugui获取ui控件屏幕坐标

local worldPos uiGo.Transform.position local uiCamera GetUICamera() local screenPos uiCamera:WorldToScreenPoint(worldPos)...

数字化转型的“支点”是什么?

​当前&#xff0c;数字化转型在推动各行各业降本增效的过程中扮演着越来越重要的角色&#xff0c;数字化转型不仅可以提高企业的生产效率和降低企业生产经营成本&#xff0c;也成为了推动经济发展的新引擎。对于企业而言&#xff0c;想要成功推动企业数字化转型&#xff0c;不…...

Spring Task单机定时任务(使用及阻塞问题解决)

一、介绍 SpringTask是Spring自主研发的定时任务工具&#xff0c;并且存在于Spring体系中&#xff0c;不需要添加任何依赖 Spring Boot 默认在无任何第三方依赖的情况下使用 spring-context 模块下提供的定时任务工具 Spring Task。 我们只需要使用 EnableScheduling 注解就可…...

石原子科技亮相2023成都市信息领域新产品发布会

2023年11月13日至15日&#xff0c;由成都市互联网信息办公室、四川天府新区管委会、成都市经信局市新经济委、成都市农业农村局指导的以“信息创造价值 创新引领未来”为主题的成都市信息领域新产品发布会在科创生态岛1号馆举行。围绕人工智能、区块链、数字化绿色化、数字乡村…...

2023数维杯国际赛数学建模竞赛选题建议及D题思路讲解

大家好呀&#xff0c;2023年第九届数维杯国际大学生数学建模挑战赛今天早上开赛啦&#xff0c;在这里先带来初步的选题建议及思路。 目前团队正在写B题和D题完整论文&#xff0c;后续还会持续更新哈&#xff0c;大家三连关注一下防止迷路。 注意&#xff0c;本文只是比较简略…...

最新宝塔反代openai官方API开发接口详细搭建教程,解决502 Bad Gateway问题

一、前言 宝塔反代openai官方API接口详细教程&#xff0c;实现国内使用ChatGPT502 Bad Gateway问题解决&#xff0c; 此方法最简单快捷&#xff0c;没有复杂步骤&#xff0c;不容易出错&#xff0c;即最简单&#xff0c;零代码、零部署的方法。 二、实现前提 一台海外服务器…...

vue3 实现pdf预览

需要下载pdfjs-dist <template><a-modal class"fill-modal" v-model:open"state.visible" :title"state.modalTitle" width"50%" cancel"handleCancel"><div class"preview-btns-posi"><a-…...

【React】Redux基本使用

什么情况使用 Redux &#xff1f; Redux 适用于多交互、多数据源的场景。简单理解就是复杂 从组件角度去考虑的话&#xff0c;当我们有以下的应用场景时&#xff0c;我们可以尝试采用 Redux 来实现 某个组件的状态需要共享时 一个组件需要改变其他组件的状态时 一个组件需要…...

Banana Pi BPI-W3之RK3588安装Qt+opencv+采集摄像头画面.

场景&#xff1a;在Banana Pi BPI-W3 RK3588上做qt开发工作RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 硬件环境&#xff1a; Banana Pi BPI-W3RK3588开发板、MIPI-CSI摄像头( ArmSoM官方配件 )软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 QT&#xff1a;QT5…...

OCR转换技巧:如何避免图片转Word时出现多余的换行?

在将图片中的文字识别转换为Word文档时&#xff0c;我们很多时候时会遇到识别内容的一个自然段还没结束就换行的问题&#xff0c;这些就是我们常说的多余换行的问题。为什么会产生这个问题呢&#xff1f;主要是由于OCR返回的识别结果是按图片上的文字换行而换行&#xff0c;而不…...

抖音小店怎么对接达人?如何避免达人白嫖样品?实操经验分享!

我是电商珠珠 很多新手在入驻完抖音小店之后&#xff0c;首先做的就是通过设置店铺活动去跑自然流量&#xff0c;之后再去搞达人流量。 但是部分新手在搞达人流量时所遇到的问题一般都是给达人发消息&#xff0c;达人不搭理&#xff0c;达人白嫖自己的样品&#xff0c;还有就…...

Xocde 升级15 或者 iOS17报错:

错误&#xff1a; Assertion failed: (false && "compact unwind compressed function offset doesnt fit in 24 bits"), function operator(), file Layout.cpp, line 5758. 翻译&#xff1a; 断言失败&#xff1a;&#xff08;false&&“压缩展开…...

Apache配置ssl证书-实现https访问

文章目录 一、准备工作1.1 安装Apache服务器1.2 Apache服务器上已经开启了443端口1.3 Apache服务器上已安装了mod_ssl.so模块1.4 获取SSL证书 二、配置apache2.1 配置apache文件2.2 生效配置文件 一、准备工作 1.1 安装Apache服务器 yum install httpd -y1.2 Apache服务器上已…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...

Java中栈的多种实现类详解

Java中栈的多种实现类详解&#xff1a;Stack、LinkedList与ArrayDeque全方位对比 前言一、Stack类——Java最早的栈实现1.1 Stack类简介1.2 常用方法1.3 优缺点分析 二、LinkedList类——灵活的双端链表2.1 LinkedList类简介2.2 常用方法2.3 优缺点分析 三、ArrayDeque类——高…...