当你立志成为python程序员时,你就加入了一个大家庭,这里不只有人,还有很多的代码,这个行话叫python的生态圈。圈里的人以此为业,也以此为乐,大家需要相互帮助。帮助什么?不是教你如何写代码,而是大家发誓不要写功能重复的代码,要写出没有BUG的代码,这就是开源共享的思想。你必须以该思想武装自己,这才是python程序员的世界观。(C语言程序员的世界观不是这样,你想一想,python没有编译,是一门完全源码的语言)。
有了上面的世界观,就决定了你做事的方法(世界观决定方法论吗)。那么你能做的有两个:1 遇到程序设计问题,首先查找生态圈,看有没有人已经提供了这样的代码,有则用之,拿来主义。如果只是部分满足要求,则拿来改之。你学过python中的函数的装饰、类的继承就是为了做这个。这里不再详述。 2 为生态圈做贡献,提供自己的代码,供大家使用。
有一个网站你必须常去,网址为pypi.org,看域名就知道有多牛(不过org一般都是免费的组织,你没猜错),这就是这个生态圈的核心。你可以把它看成是一个python程序员进行代码共享的代码仓库。赶快去申请一个会员。不要担心,网站向所有的人开放,不问来历,不问你是否菜鸟,只要你愿意都可以成为会员。而会员的唯一功能就是你可以将自己的代码提供给所有的人来使用。也就是说给了你为大家做贡献的机会。
如何拿来:当你遇到开发需求时,进入网站pypi.org(不需要你是会员),按照你的需求,进行搜索。找到你需要的代码名字(称为package,中文叫包),在你的计算机上执行如下命令,完成代码的下载和安装:
pip install [包的名字]
现在你就可以在自己的代码中使用这个包了,如下面的代码。
from [包的名字] import [模块的名字]
如何奉献:下面我们建立一个包,并将其上传到pypi.org去占坑,作为你对生态圈的第一个贡献。
1 建立自己的第一个包第一个项目非常简单,但麻雀虽小,五脏俱全。首先为项目建立下面的目录结构和文件:
|--myproject #项目的根目录 |--docs #项目的文档目录 |--tests #项目的测试目录 |--helloworld #包目录* |--__init__.py #包的标志文件,可以为空 |--helloworld.py # 这个包只有一个模块 |--README.md # 项目的说明文件*。上传后会作为包的说明 |--setup.py # 项目发布文件*
其中,helloworld.py的内容为:
print('Hello World! I am cainiao')
这只是一个简单的框架,但包含了所有的目录结构。
2 打包与发布附加:
module。最基本的单位,每一个单独的python文件,扩展名一般为py,就是一个模块。package。 是一个目录,目录下至少包含一个模块文件和一个__init__.py文件,后者可以是空的,你剋认为它只是一个标志,表示该目录为package。project。本身是一个目录,下面包含了一到多个package以及项目的所有材料。
python项目的打包和发布都和setup.py文件有关,按照以下过程进行:
2.1 编写setup.py文件# setup.pyfrom setuptools import setup, find_packagessetup( name = "cainiao.helloworld", version = "0.0.1", packages = find_packages(), author = "cainiao", author_email = "cainiao@example.com", description = "This is my hello world package", license = "MIT", url = "http://example.com/HelloWorld/" )
注意:
name:是准备上传的包的名字,就是别人下载你的包时,命令“pip install [包的名字]”中包的名字。因此:需要做到全网唯一性,一般建议这样写:你或公司名.包的名字。另外,这个名字和你发布的包的内部名字,没有必然联系,当然最好有联系,便于理解。version:包的版本号。每次上传时,如果版本号没有变大,会被拒绝.odescription:这句话会显示在你的包简介页面上,要求简洁。其它内容以后慢慢学。2.2 打包python项目为了保持跨平台的特性,一般采用源码打包与发布。在项目根目录下执行:
python setup.py sdist
该命令就是对源码打包,会建立一个dist目录,并将项目打包为一个压缩文件,放在该目录下。
2.3 发布注意:
有些项目包含其它语言,尤其是c语言扩展。这些代码需要根据不同的平台进行编译后才能使用。这时如果采用源码打包,会将编译任务交给使用者。所以在打包前,可以预编译这些代码,并采用如下的命令打包。
python setup.py bdist_wheel --universal
其中的–universal代表支持python2和python3。该命令会建立build目录,并将所有文件打包到该目录下。这种包和平台相关。
注意:这两种打包方式,都是源码的压缩包。
发布就是把你的包上传到pypi.org,供大家下载使用,但要注意,pypi先后有多个仓库,且支持的功能也不一样。我感受最深的就是对描述文件格式的支持,比如只有最新的仓库才支持markdown格式的long-description。因此为了避免掉坑,建议:
直接用twine进行发布。twine是pypi正在主推的工具,主要特点是增加了安全性和交互性,而且会将项目上传到最新的仓库,避免了很多坑。另外,也不要建立配置文件,虽然需要每次上传都输入用户名和密码,但现在可以避免很多坑。首先安装twine:
pip install twine
然后就可以上传了:
twine upload dist/*
在上传中,会要求你输入pypi.org网站的用户名和密码。
注意:每次发布,要保证新包的版本号要比仓库上的版本号大,否则会发布失败。
至此,发布已经成功了。
说明:一个好的习惯是,先将项目传到测试仓库,测试正常后再上传到正式仓库。为此,可以采用如下命令:
twine upload dist/* -r testpypi
可以看出,只是命令后面加了一个参数,指明是测试仓库,其余都相同。
发布后,当然得赶快看看是否成功了:
打开pypi.org网站,在上面搜索包的名字,注意你的包的名字是cainiao.helloworld。应该就会看到,有时可能要等几分钟。
3 下载和维护3.1 测试站在其它开发者的角度,假装这个包不是自己的,下载下来试一下:
命令行执行:
pip install cainiao.helloworld
一般下载和安装的速度很快。
完成后,使用一下这个包。打开任何Python编程环境,创建一个python文件,内容只有一句,如下:
from helloworld import helloworld
然后运行这个文件,就会看到屏幕输出:
Hello World! I am cainiao.
成功了。
3.2 维护在pypi.org网站上,登陆进入后,在个人主页有项目管理选项。进入后可以看到你上传的所有项目。你现在可能只有一个项目,但以后会越来越多。每一个项目会有一个简洁的页面,进去后可以对其查看和管理。尤其是管理中包括删除该项目。
总结以上是内存溢出为你收集整理的python菜鸟修炼:初入生态圈全部内容,希望文章能够帮你解决python菜鸟修炼:初入生态圈所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)