只是多了一个python脚本,所有人都开始喜欢它!python代码入口点详解

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

这篇文章将会聊聊python代码中的入口点.很多人可能知道,入口点一般会放在setup.py 文件中,经过打包后可以作为命令行使用,不过很少有人会去用它.接下来,我将会介绍如何使用入口点生成python包,之后就可以让别人在代码中或者命令行下使用.

安装过python包的都知道使用pip install , setup.py就是定义了你自己开发的包的相关信息,然后可以打包上传到python的包管理中心供别人下载.而入口点entry_points可以让包作为命令行工具使用.

Snek,Inc.

恭喜你!你刚刚被任命为"snek半导体和软件公司"的CEO,作为CEO,你的第一个工作是让员工开发出snek的原型系统,很快,工程师就做出来了,它是一个python脚本,snek.py:

在公司产品发布的那一天,你演示了这个原型系统,运行很顺利:

SaaS--Snek as a Service

不幸的是,用户不会使用python,他们只想在电脑的命名行下直接使用Snek的服务,于是工程师们加班加点作出了下一个版本,让snek在安装时自动生成控制台脚本,这样就可以在命令行下运行了.他们是怎么做的?只需要在setup.py 脚本中包含包名,依赖等信息,像下面这样:

下面的代码就是指定了应该从snek脚本的main函数开始执行.

工程师说,控制台脚本就是特殊的入口点,setuptools 在你的包被别人安装时,读取其中的内容并生成某些脚本文件.现在,让我们从源代码中安装(当然你可以发布为python库,让别人使用pip下载安装):

在公司的年度产品会上,你展示了这个amazing的产品:

Snek for Everyone

没有人不喜欢Snek,公司的IPO超过了60亿美元.有些高级用户希望为他们量身定制高级的版本.工程师又加班加点做了出来:

他们加了一个豪华版的Snek,这让高级用户特别开心.小编推荐一个学python的学习裙,【六九九+七四九+八五二】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

Snek International Community

全球数百万人都在使用snek,人们对snek不同版本的需求越来越高,而且一些snek的专业用户(程序员)要求snek可以定制,他们想开发自己的snek版本.

他们增加了snek的基础架构,当snek运行时,使用被称作snek_types 的入口点注册其他类型的snek,这样就能动态的在控制台输出不同的snek版本.

具体来说,get_sneks 中的pkg_resources.iter_entry_points('snek_types') 遍历所有注册到入口点的snek名,然后加入snek版本中.于是,开发者们加入了一个可爱版本的snek,命名为cute_snek.py :

如何找到这个可爱版本的snek呢?像下面这样定义setup.py:

代码中指定了从cute_snek.py脚本寻找cute_snek.

然后像之前一样打包:

现在我们就能在命令行下成功的运行这个可爱版本的snek,这是从cute_snek中动态加载的:

既然cute_snek可以动态的加载,那么所有类型的snek应该都可以动态加载,于是工程师们又修改了代码:

所有的snek都从snek_types中加载.小编推荐一个学python的学习裙,【六九九+七四九+八五二】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

现在重新打包snek:

大功告成!!!

到此为止,你应该大概知道了如何使用python中的入口点了吧.

Python可以做什么?

web开发和 爬虫是比较适合 零基础的

自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员

大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强

科学计算 一般都是科研人员 在用

机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608A212RE00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券