CN109756570A - 一种实现定制pypi镜像服务器的方法及电子设备 - Google Patents

一种实现定制pypi镜像服务器的方法及电子设备 Download PDF

Info

Publication number
CN109756570A
CN109756570A CN201811636985.1A CN201811636985A CN109756570A CN 109756570 A CN109756570 A CN 109756570A CN 201811636985 A CN201811636985 A CN 201811636985A CN 109756570 A CN109756570 A CN 109756570A
Authority
CN
China
Prior art keywords
party library
pypi
updated
mirror image
image server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811636985.1A
Other languages
English (en)
Inventor
李天驰
孙悦
翁晓君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Dianmao Technology Co Ltd
Original Assignee
Shenzhen Dianmao Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Dianmao Technology Co Ltd filed Critical Shenzhen Dianmao Technology Co Ltd
Priority to CN201811636985.1A priority Critical patent/CN109756570A/zh
Publication of CN109756570A publication Critical patent/CN109756570A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开一种实现定制pypi镜像服务器的方法及电子设备,其中,方法包括:当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;根据所述更新包对相应的第三方库进行更新;对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。通过本发明,可以确保用户能够成功下载到切实可用的第三方库,提高第三方库的成功下载率,减少了开发人员后期维护官方库升级带来的各种未知的问题。

Description

一种实现定制pypi镜像服务器的方法及电子设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种实现定制pypi镜像服务器的方法及电子设备。
背景技术
一般来说,软件包管理工具必然有一个软件包仓库。而Python的官方软件包仓库就是pypi。通常情况下用户都是使用easy_install或pip从pypi仓库下载软件包并安装,使用起来非常方便。但如果网络状况不好或没有网络的话则无法使用,针对这一点,Python提供了Pypi服务器软件,使得可以在本地搭建一个pypi镜像服务器,然后就可以使用自身的镜像服务器来下载安装。
pypi官方服务上的第三方库可能随时会更新,这会带来几个问题:1、与之前的旧版本不兼容,比如修改了接口;2、只包含源码包,不包含预编译好的更新包,这样的话在使用时要先下载源码包,并且要有完整的编译环境,条件较苛刻。这会导致用户之前写好的python代码跑不起来,而且无法安装一些常用包,比如vpython/dlib/pyechats。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供一种实现定制pypi镜像服务器的方法及电子设备,旨在解决现有技术中pypi第三方库下载安装成功率不高等问题。
本发明的技术方案如下:
一种实现定制pypi镜像服务器的方法,其中,包括步骤:
当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
根据所述更新包对相应的第三方库进行更新;
对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
所述的实现定制pypi镜像服务器的方法,其中,所述对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器的步骤包括:
判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突;
若无冲突,则将更新后的第三方库上传至线上服务器,若有冲突,则不上将更新后的第三方库上传至线上服务器。
所述的实现定制pypi镜像服务器的方法,其中,所述自动编译并打包得到更新包的步骤具体包括:
对所述更新代码进行自动编译;
并根据预定脚本进行打包得到wheel文件。
所述的实现定制pypi镜像服务器的方法,其中,所述预定脚本为官方手册提供的脚本。
所述的实现定制pypi镜像服务器的方法,其中,所述判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突的步骤之前包括:
收集用户上传的python源码。
所述的实现定制pypi镜像服务器的方法,其中,对于在指定时间段内收集的用户上传的python源码,若其依赖的第三方库与更新后的第三方库无冲突,则将更新后的第三方库上传至线上服务器,若其依赖的第三方库与更新后的第三方库有冲突,则不上将更新后的第三方库上传至线上服务器。
所述的实现定制pypi镜像服务器的方法,其中,若更新后的第三方库与用户上传的python源码依赖的第三方库有冲突,则记录冲突情况。
一种电子设备,其中,包括:
处理器,适于实现各指令,以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
根据所述更新包对相应的第三方库进行更新;
对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
一种非易失性计算机可读存储介质,其中,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的实现定制pypi镜像服务器的方法。
一种计算机程序产品,其中,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的实现定制pypi镜像服务器的方法。
有益效果:通过本发明,可以确保用户能够成功下载到切实可用的第三方库,提高第三方库的成功下载率,减少了开发人员后期维护官方库升级带来的各种未知的问题。
附图说明
图1为本发明一种实现定制pypi镜像服务器的方法较佳实施例的流程图。
图2为本发明一种电子设备较佳实施例的结构框图。
具体实施方式
本发明提供一种实现定制pypi镜像服务器的方法及电子设备,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明一种实现定制pypi镜像服务器的方法较佳实施例,如图所示,其包括步骤:
S1、当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
S2、根据所述更新包对相应的第三方库进行更新;
S3、对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
通过本发明,可以确保用户能够成功下载到切实可用的第三方库,提高第三方库的成功下载率,减少了开发人员后期维护官方库升级带来的各种未知的问题。
具体地,在所述步骤S1中,当接收到pypi镜像服务器的更新消息时,下载更新代码。
pypi官方服务上的第三方库可能随时会更新,若有更新时,pypi镜像服务器会发送通知,即发送所述更新消息,当接收到更新消息时,则下载更新代码。
其中的更新代码是第三方库的更新代码,本发明中,先对更新代码进行自动编译并打包得到更新包。
进一步,所述自动编译并打包得到更新包的步骤具体包括:
对所述更新代码进行自动编译;
并根据预定脚本进行打包得到wheel文件。
wheel是一种制作分发格式,即打包格式,由PEP427定义。wheel文件不会包含.pyc文件,wheel使用和PEP376兼容的.dist-info目录,Wheel有着更丰富的命名规则。wheel是有版本的。每个wheel文件都包含wheel规格的版本和打包它的实现。wheel在内部被sysconfig path type管理,因此转向其他格式也更容易。
本发明是通过预定脚本来进行打包的,其中的预定脚本是官方手册提供的脚本。其中的预定脚本可以是python setup.py bdist_wheel或pip wheel-rrequirements.txt。
Python库打包分发的关键在于编写setup.py文件。setup.py文件编写的规则是从setuptools或者distuils模块导入setup函数,并传入各类参数进行调用。
在所述步骤S2中,根据所述更新包对相应的第三方库进行更新。
通过pypi后端的运营管理界面,可以对指定的python第三方库进行更新,甚至确定更新到哪个版本,例如更新到经测试验收过没有问题的稳定版本。
在所述步骤S3中,对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
本发明中,由于对更新后的第三方库进行了测试,且只将测试通过的第三方库上传到线上服务器,供用户下载安装。这样避免了将一些有问题的第三方库提供给用户使用,避免了用户在下载之后出现的各种不兼容、无法安装等等问题。
进一步,所述对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器的步骤包括:
判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突;
若无冲突,则将更新后的第三方库上传至线上服务器,若有冲突,则不上将更新后的第三方库上传至线上服务器。
本发明是将用户上传的python源码依赖的第三方库与更新后的第三方库进行比对,判断是否有冲突。具体地,用户会上传自己的python源码,而在后台可以查看与更新后的第三方库相关的代码的运行情况,若更新后的第三方库能保证用户的python源码文件能够正常运行,则说明用户上传的python源码依赖的第三方库与更新后的第三方库没有冲突,若更新后的第三方库不能使用户的python源码文件正常运行,则说明用户上传的python源码依赖的第三方库与更新后的第三方库有冲突。
进一步,所述判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突的步骤之前包括:
收集用户上传的python源码。
本发明的方法应用在教育系统中,可以是由学生上传自己的python源码,在后台即可判断更新后的第三方库与上传的python源码依赖的第三方库是否有冲突。
进一步,对于在指定时间段内收集的用户上传的python源码,若其依赖的第三方库与更新后的第三方库无冲突,则将更新后的第三方库上传至线上服务器,若其依赖的第三方库与更新后的第三方库有冲突,则不上将更新后的第三方库上传至线上服务器。
本发明中,需要指定一个时间段,在该指定时间段,对更新后的第三方库进行测试,若测试通过,则进行上线,若测试不通过,则不进行上线。其中的测试就是将用户上传的python源码依赖的第三方库与更新后的第三方库进行比对,判断是否有冲突。
例如,在进行测试后的一周内,如果用户上传的python源码依赖的第三方库与更新后的第三方库无冲突,则上传至线上服务器,如果用户上传的python源码依赖的第三方库与更新后的第三方库有冲突,则进行上传。
在指定时间段内,可以对每个用户上传的python源码进行分析,也可以挑选其中的部分代表性的python源码进行分析。
在指定时间段内,可以按照设定的测试周期(所述测试周期小于指定时间段,即指定时间段内应至少有一个测试周期)来进行测试,例如测试周期为一天,那么每天的指定时间统一进行测试,或者测试周期为两天,那么每两天的指定时间统一进行测试。
本发明由于应用的场景主要是教育领域,即学生会上传自己写好的python源码至后台,所以本发明是在后台对更新后的第三方库进行测试,至于测试的方法在前述步骤中已有叙述。
本发明中,优选的是对在指定时间段内所有学生每次上传的python源码进行比对,即将每个学生每次上传的python源码依赖的第三方库与更新后的第三方库进行比对。但如果学生过多,或者上传的python源码过多,那么测试效率将大打折扣。所以本发明优选的是选择若干python源码进行比对。选择的方式多种多样,但本发明优选的是,对于每个学生,均挑选出至少一python源码进行比对,以便测试的覆盖面更广。同时,对于每个学生,可以对学生上传的python源码的数量进行分析,对各学生上传的python源码的数量(也可称次数)进行统计,然后获取每个学生上传的python源码的数量占所有学生上传的python源码的总数量的比例。同时,设定一个比对数量阈值,当在测试周期内,所有学生上传的python源码的总数量低于或等于比对数量阈值时,则可以对每个学生每次上传的python源码进行比对,也就是说,该比对数量阈值是一个测试周期的上限,如果python源码的数量在该上限内,那么可以对每个python源码都进行比对。当在测试周期内,所有学生上传的python源码的总数量高于比对数量阈值时,则可以按照所述比例为每个学生分配需要比对的python源码的数量,使在该测试周期内所有学生所分配的python源码的总数量小于或等于比对数量阈值,当然应使该测试周期内所有学生所分配的python源码的总数量最接近或等于比对数量阈值,这样可以提高测试覆盖面,且不影响测试效率。
另外,本发明中,由于学生数量可能较多,有可能无法保证每个学生上传的python源码依赖的第三方库与更新后的第三方库不冲突,所以本发明可以设置一个测试比例,当在一个测试周期内不冲突(上传的python源码依赖的第三方库与更新后的第三方库不冲突)的比例不低于所述测试比例,则可判定该测试周期的测试通过。另外,在指定时间段内所有测试周期均测试通过,则表示该更新后的第三方库测试通过,这样可以确保绝大部分学生都能正常安装使用更新后的第三方库。
进一步,若更新后的第三方库与用户上传的python源码依赖的第三方库有冲突,则记录冲突情况。
记录冲突情况是为了对方便后续针对冲突的问题进行优化,并解决相关的问题。
本发明还提供一种电子设备10,如图2所示,其包括:
处理器110,适于实现各指令,以及
存储设备120,适于存储多条指令,所述指令适于由处理器110加载并执行:
当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
根据所述更新包对相应的第三方库进行更新;
对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
所述处理器110可以为通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、单片机、ARM(Acorn RISC Machine)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。还有,处理器还可以是任何传统处理器、微处理器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、任何其它这种配置。
存储设备120作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的实现定制pypi镜像服务器的方法对应的程序指令。处理器通过运行存储在存储设备中的非易失性软件程序、指令以及单元,从而执行实现定制pypi镜像服务器的方法的各种功能应用以及数据处理,即实现上述方法实施例。
关于上述电子设备10的具体技术细节在前面的方法中已有详述,故不再赘述。
本发明还提供一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行所述的实现定制pypi镜像服务器的方法。
本发明还提供一种计算机程序产品,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行所述的实现定制pypi镜像服务器的方法。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

1.一种实现定制pypi镜像服务器的方法,其特征在于,包括步骤:
当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
根据所述更新包对相应的第三方库进行更新;
对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
2.根据权利要求1所述的实现定制pypi镜像服务器的方法,其特征在于,所述对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器的步骤包括:
判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突;
若无冲突,则将更新后的第三方库上传至线上服务器,若有冲突,则不上将更新后的第三方库上传至线上服务器。
3.根据权利要求1所述的实现定制pypi镜像服务器的方法,其特征在于,所述自动编译并打包得到更新包的步骤具体包括:
对所述更新代码进行自动编译;
并根据预定脚本进行打包得到wheel文件。
4.根据权利要求3所述的实现定制pypi镜像服务器的方法,其特征在于,所述预定脚本为官方手册提供的脚本。
5.根据权利要求2所述的实现定制pypi镜像服务器的方法,其特征在于,所述判断更新后的第三方库与用户上传的python源码依赖的第三方库是否有冲突的步骤之前包括:
收集用户上传的python源码。
6.根据权利要求5所述的实现定制pypi镜像服务器的方法,其特征在于,对于在指定时间段内收集的用户上传的python源码,若其依赖的第三方库与更新后的第三方库无冲突,则将更新后的第三方库上传至线上服务器,若其依赖的第三方库与更新后的第三方库有冲突,则不上将更新后的第三方库上传至线上服务器。
7.根据权利要求2所述的实现定制pypi镜像服务器的方法,其特征在于,若更新后的第三方库与用户上传的python源码依赖的第三方库有冲突,则记录冲突情况。
8.一种电子设备,其特征在于,包括:
处理器,适于实现各指令,以及
存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:
当接收到pypi镜像服务器的更新消息时,下载更新代码,然后自动编译并打包得到更新包;
根据所述更新包对相应的第三方库进行更新;
对更新后的第三方库进行测试,将测试通过的第三方库上传至线上服务器。
9.一种非易失性计算机可读存储介质,其特征在于,所述非易失性计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行时,可使得所述一个或多个处理器执行权利要求1-7任一项所述的实现定制pypi镜像服务器的方法。
10.一种计算机程序产品,其特征在于,计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令被处理器执行时,使所述处理器执行权利要求1-7任一项所述的实现定制pypi镜像服务器的方法。
CN201811636985.1A 2018-12-29 2018-12-29 一种实现定制pypi镜像服务器的方法及电子设备 Pending CN109756570A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811636985.1A CN109756570A (zh) 2018-12-29 2018-12-29 一种实现定制pypi镜像服务器的方法及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811636985.1A CN109756570A (zh) 2018-12-29 2018-12-29 一种实现定制pypi镜像服务器的方法及电子设备

Publications (1)

Publication Number Publication Date
CN109756570A true CN109756570A (zh) 2019-05-14

Family

ID=66403303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811636985.1A Pending CN109756570A (zh) 2018-12-29 2018-12-29 一种实现定制pypi镜像服务器的方法及电子设备

Country Status (1)

Country Link
CN (1) CN109756570A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111258595A (zh) * 2020-03-13 2020-06-09 山东超越数控电子股份有限公司 一种基于PyInstaller的python源代码封装方法
CN112860285A (zh) * 2019-11-12 2021-05-28 深圳怡化电脑股份有限公司 金融自助设备的sp升级包生成方法、装置及计算机设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106293820A (zh) * 2016-08-02 2017-01-04 山东大学 开发测试运维一体化系统、部署、全量以及增量更新方法
WO2017084275A1 (zh) * 2015-11-20 2017-05-26 乐视控股(北京)有限公司 软件开发一体化的方法及装置
CN108228190A (zh) * 2018-01-25 2018-06-29 杭州时趣信息技术有限公司 持续集成和交付方法、系统、设备及计算机可读存储介质
CN108427634A (zh) * 2017-11-21 2018-08-21 平安科技(深圳)有限公司 电子装置、测试的方法及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017084275A1 (zh) * 2015-11-20 2017-05-26 乐视控股(北京)有限公司 软件开发一体化的方法及装置
CN106293820A (zh) * 2016-08-02 2017-01-04 山东大学 开发测试运维一体化系统、部署、全量以及增量更新方法
CN108427634A (zh) * 2017-11-21 2018-08-21 平安科技(深圳)有限公司 电子装置、测试的方法及计算机可读存储介质
CN108228190A (zh) * 2018-01-25 2018-06-29 杭州时趣信息技术有限公司 持续集成和交付方法、系统、设备及计算机可读存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860285A (zh) * 2019-11-12 2021-05-28 深圳怡化电脑股份有限公司 金融自助设备的sp升级包生成方法、装置及计算机设备
CN111258595A (zh) * 2020-03-13 2020-06-09 山东超越数控电子股份有限公司 一种基于PyInstaller的python源代码封装方法
CN111258595B (zh) * 2020-03-13 2023-08-01 超越科技股份有限公司 一种基于PyInstaller的python源代码封装方法

Similar Documents

Publication Publication Date Title
US6205579B1 (en) Method for providing remote software technical support
CN108170612B (zh) 一种自动化测试方法、装置及服务器
CN105426298B (zh) 一种基于adb的软件测试方法和系统
CA2303064C (en) Automated meter reading system
CN109614341A (zh) 一种代码覆盖率的测试方法及系统
CN103902542A (zh) 一种测试环境中数据库的运维方法及系统
CN103560906A (zh) 数据复制的方法及装置
CN109360029B (zh) 一种远程终端广告机的自我管理方法
US20140156596A1 (en) Replication control using eventually consistent meta-data
CN105512044A (zh) 用于关键字驱动测试的对象库的更新方法及系统
CN109756570A (zh) 一种实现定制pypi镜像服务器的方法及电子设备
CN110232097A (zh) 一种数据同步方法及装置
CN100468330C (zh) 一种脚本内核管理方法及系统
CN112486938A (zh) 一种应用于kubernetes集群的日志收集方法以及系统
CN106502713A (zh) 一种软件升级方法和系统
CN111949311B (zh) 灰度发布方法及系统
CN105824654A (zh) 一种对智能终端进行app软件预装的方法及装置
CN102281326A (zh) 基于web服务器的程序与数据自动同步更新的方法
CN107015831A (zh) 一种基于服务器端升级的客户端升级管理方法及系统
CN113377413A (zh) 一种基于麒麟桌面操作系统的软件批量适配方法
CN115174342B (zh) 网关的插件管理方法、装置及设备
CN114816452B (zh) 一种基于数据元的医院软件自动化部署方法
CN117215907A (zh) 软件缺陷清单的提交方法、装置、介质及电子设备
CN113126694B (zh) 计算机管理子系统的对时方法、系统、设备及存储介质
Salminen Improving the Performance of a CouchDB Powered WebSocket API in Low-Quality Internet Conditions

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190514

RJ01 Rejection of invention patent application after publication