城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

Python中的requirements。txt与setup

1月5日 霸王亭投稿
  Python中requirements。txt、setup。py和setup。cfg的用途
  新手而言管理Python项目中的依赖项是非常具有挑战性的,这个问题是由历史原因引起的并且一直被吐槽。
  在今天的文章中,我们将讨论如何正确管理Python项目的依赖关系。更具体地说,将讨论requirements。txt文件的用途以及如何使用setuptools来分发自定义的Python包并让其他用户进一步使用和开发它。除此以外还将讨论设置文件(即setup。cfg和setup。py)的用途以及如何将它们与需求文件一起使用,这样可以使包开发和重新分发的过程变得更容易。
  Python项目的依赖关系是什么
  让我们从包依赖开始;介绍它们到底是什么以及如何正确管理它们,因为这样可以使以使Python项目变得更容易维护。
  简单来说,依赖项是我们Python项目所依赖的外部其他的Python包,例如在AI方向,用到最多的包就是Numpy和Pandas。在Python中,这些依赖通常可以在Python包索引(PyPI)或其他管理工具中找到(例如Nexus),后面我们都以PyPI为例介绍,因为它是最常用而且大家都在用的包管理工具。
  现在我们自己的Python项目中可能需要引用某个特定版本的第三方包有依赖。这种情况可能会导致依赖冲突的出现,因为我们所有的依赖中(至少)有两个依赖项可能依赖同一个包,但每个依赖项都需要该外部包的特定版本(比如一个需要1。0,而一个需要2。0)。这种特殊的情况我们需要告诉pip需要如何处理依赖关系以及我们需要哪些特定版本。
  一般情况下,我们需要requirements。txt来指定项目的依赖包和版本,所以我们先看看requirements。txt的格式requirements。txt文件
  requirements。txt是一个文件,列出了Python项目的所有依赖项。如前所述,它还可能包含依赖项的依赖项。列除了依赖包名称外,还可以指定特定的版本(使用)、或,甚至两者都指定。
  示例requirements。txt文件matplotlib2。2numpy1。15。0,1。21。0pandaspytest4。0。1
  然后就可以使用以下命令通过pip安装这些依赖项(通常在虚拟环境中):pipinstallrrequirements。txt
  在上面的示例中,我们指定了一些依赖项。例如,对于没有关联版本的的pandas包,pip将正常安装最新版本,除非其他依赖项之一与它有任何冲突(如果有冲突,pip将安装满足其余依赖项指定条件的最新pandas版本)。对于pytest,包管理器将安装特定版本(即4。0。1),而对于matplotlib,将安装至少大于或等于2。2的最新版本(这还是取决于是否有其他依赖项具体要求,如果没有则会安装符合条件的最新版)。对于numpy包,pip将尝试安装1。15。0(包含)和1。21。0(不包含)之间的最新版本。
  在安装所有依赖项后,可以通过运行pipfreeze来查看虚拟环境中安装的每个依赖项的确切版本。此命令将列出所有包及其特定版本(即)。
  requirements。txt非常有用,但他只针对于我们项目的开发和发布(例如线上部署等)。如果你想将你代码发布到PyPI供其他人使用,那么需要的不仅仅是这个文件。Python中的setuptools
  setuptools是构建在distutils之上的包,它可以帮助开发人员快速发布Python包。除此以外它还提供了使依赖管理更容易的功能。
  当想要发布一个包时,通常需要填写一些元数据,例如包名、版本、依赖项、入口点等。setuptools就提供了简化这些操作的功能。
  项目的元数据等信息需要在setup。py文件中定义,例如下面的demo:fromsetuptoolsimportsetupsetup(namedemo,authordeephub,version0。1,installrequires〔pandas,numpy,matplotlib,〕,。。。moreoptionsmetadata)
  我们所填写的信息都是纯声明性的,所以一个更好的方法是在名为setup。cfg的文件中定义这些元数据和信息,然后只需在setup。py文件中调用setup()即可。setup。cfg文件如下所示:〔metadata〕namedemoauthordeephubversion0。1〔options〕installrequirespandasnumpymatplotlib
  这样在我们的setup。py文件中只需要保留最少的代码:fromsetuptoolsimportsetupifnamemain:setup()
  上面installrequires参数与requirements。txt类似,可以使用运算符、、、、或!,后跟版本标识符。当项目安装时会根据该配置来下载和安装依赖。我们需要requirements。txt和setup。pysetup。cfg文件吗?
  这就需要分情况对待了。首先requirements。txt与setup。py之间的通常用于实现不同的需求:如果主要用于项目开发目的,并且不打算发布到pypi上,则requirements。txt就足够了(即使该包是在多台机器上开发的)如果包仅在单机开发,但是需要把他作为pip的包发布到pypi上,那么setup。pysetup。cfg就足够了。如果包是在多台机器上开发的并且还需要把他发布到pypi上,这就需要requirements。txt(多个机器需要相同的开发环境)和setup。pysetup。cfg文件(发布到pypi上)。
  另外就是如果同时使用两者,setup。py(setup。cfg)文件应包含抽象依赖项列表,而requirements。txt文件必须包含具有每个包版本的特定引脚的具体依赖项(使用指定特定版本)。
  以下是Python文档中官方的定义:installrequires(即setup。py)定义了单个项目的依赖关系,而requirements。txt通常用于定义完整Python环境。
  尽管installrequires要求很少,但requirements。txt通常包含详尽的固定版本列表,以实现完整环境的可重复安装。
  总结
  本文中讨论了在开发Python项目和应用程序时适当的依赖管理的重要性。并且介绍了requirements。txt文件的用途以及如何将它与setuptools的配置文件(即setup。py和setup。cfg)一起使用,这样可以保证其他开发人员可以安装、运行、开发甚至测试源代码Python包的代码。
  setuptools并不能完全替代requirements。txt文件。并且在大多数情况下,可能需要这两个文件同时存在,这样才能够正确管理包依赖和进行包的发布。
  作者:GiorgosMyrianthous
投诉 评论 转载

2999元值得买吗?RedmiK50Pro体验一天后,说说真自从RedmiK50系列手机提前寄送到公司之后,笔者就对其中的RedmiK50Pro格外感兴趣,所以也申请体验了一天,身处科技媒体公司就是有这点好处,可以率先不用花钱体验到新机……乒乓球大满贯赛石川佳纯狂轰111晋级!约战陈梦或将爆发恶战北京时间3月16日下午,乒乓球WTT大满贯赛继续进行,国乒两大劲敌石川佳纯、郑怡静狭路相逢,展开激战,结果石川佳纯在20领先的情况下连丢2局,但她没有被困难吓倒,决胜局狂轰11……发现娃放学回来有这3种迹象,表明很有可能在遭受隐形霸凌文桃小真育儿现在很多小孩比较任性,尤其是一些独生子的家庭可能会更宠爱孩子些,导致他们胆子大的不得了,总觉得不管自己惹出多大祸,家里是有人罩着他,任他这样妄为!关于幼……经常服用藏红花泡水,身体可以收获什么好处?这3类人尽量慎用说到藏红花,很多女性并不陌生,很多女性经常在水中放些藏红花,不仅能调节月经,还能促进血液循环速度,藏红花对女性的好处还是很多的,下面就跟着医生一起来了解一下,关于藏红花对于女性……国医大师孙光荣治疗失眠经验孙光荣第三届国医大师(1941)最近睡得好吗?有没有为失眠的问题犯过愁?本该进入甜美梦乡的夜晚,你却在床上翻过来覆过去,怎么也无法入眠。如果只是偶尔失眠,可以通过养成良好……无立身之地,还是想自我救赎?远赴重洋的周琦,现在混得咋样了?北京时间2019年9月2日,这一晚,想必会是很多篮球迷难以忘怀的一晚,我想也会是周琦彻夜难眠的一晚。这一夜,球迷和中国男篮迎来的不是欢欣与喜悦,而是伤心与绝望!当时……终于找到了苹果销量下滑的原因?原因不在产品,而在售后方面?不知道屏幕前大家有没有一种感觉,那就是时间到了现在,苹果手机的销量似乎已经没有当年那么的恐怖了!依稀记得在当年,苹果手机的销量那真可谓是一骑绝尘,特别是在618或者双十二这种时……贾乃亮发文告别田景野每一场戏都不负自己2月17号,《相逢时节》收官,贾乃亮发文告别‘田景野称:今晚就要跟你们说再见了,与田景野和大家一起度过的三月有笑有泪,有苦有甜。感谢这段宝贵的经历,无论是一场戏也好,一千……Python中的requirements。txt与setupPython中requirements。txt、setup。py和setup。cfg的用途新手而言管理Python项目中的依赖项是非常具有挑战性的,这个问题是由历史原因引……屏下摄像头旗舰地板价?motoedgeX30屏下版发布,34随着市面上骁龙8机型越来越多,大家也开始见怪不怪,习以为常了。但是要说骁龙8屏下摄像头旗舰大家肯定还是有兴趣的,毕竟现在市面上还真找不到。屏下摄像头是目前比较火热的新研究方向,……注意啦!监管部门提醒警惕这些过度借贷营销陷阱银保监会消费者权益保护局14日发布风险提示,提醒消费者远离过度借贷营销陷阱,防范过度借贷风险。图片来源:新华社一是诱导消费者办理贷款、信用卡分期等业务。比如,以优惠……从中国奥运品中式浪漫鸟巢(图片来源于网络)如果有人问出这样一个问题:世界上最浪漫的国家是哪个?人们脑海中浮现的往往都是法国、意大利、西班牙这样的欧洲国家,很少有人会把浪漫二字与中国联系在一起……
电视盒子软件,电视安装上它,所有电影随便看组图昆明弥勒寺公园精品兰花争奇斗艳儿童多动症能治好吗?多动症孩子真的没救了吗?游戏巨头动视暴雪被罚3500万美元任正非心都碎了!华为再次被美国卡住了脖子,华为举步维艰开罗国民利雅得新月晋级世俱杯半决赛地球往事中国的围棋世界冠军姓氏大全无四大姓每姓无二人丁浩夺冠丁家入围冠军野辅火力全开!UP21战胜OMG,宝蓝拿下回归后的首个M返校必选!联想小新Pro14162023款开售5399元起备份数据湖,多云时代的价值刷新ToB产业观察回忆朝鲜之行(九)裤子和裙子安导与罗导的故事

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁