5步造轮子:详解“Python”模块的封装与引用—并上传到PyPI社区

orlandowww 2018-12-05

作为一个编程人员,好多人都想自己造个“轮子”被人使用并熟知。但也有些人之所以自己造轮子,也不单单是奉献群体,主要是项目需要。就好比车辆组装一样,市面上买的轮子不一定就是自己适合的或喜欢的,所以自己动手写个“轮子”也无可厚非。

5步造轮子:详解“Python”模块的封装与引用—并上传到PyPI社区

那么今天我们就来讲一讲,如何自己封装一个python模块。

模块管理:

把一个或多个函数独立封装到一个py文件中,在另一个py文件中调用,要想调用,首先要导入模块名,然后再调用模块中的函数名。

注:模块中的变量不可以在模块之外单独使用。

例:

想要引用某个模块:import 模块名

import Phone #导入手机模块

想要引用某个函数:form 模块名 import 模块下的函数名

form Phone import HUAWEI #导入手机模块下的 华为函数

以上是简单的常规引用,我们下面继续说如何构建一个可以安装的模块。

5步造轮子:详解“Python”模块的封装与引用—并上传到PyPI社区

构建模块:

  1. 新建一个python模块(名字随便起),用来存放代码。
  2. 新建一个安装模块也就是setup.py(用来存放描述信息)。
  3. 新建一个跟模块名同名的文件夹,然后把上面创建的文件放进去。

以上是基本步骤,下面重点来了!

模块实现:

我们先来创建一个文件夹,起名叫phone(当然模块名要相同)

然后创建一个模块,比如说这里我们起名叫phone.py来实现一个手机功能的库:

def call(number):

print('正在打电话给:' + number)

def sms(smsText):

print('发送内容为:' + smsText)

接下来我们创建一个setup.py:

from distutils.core import setup

setup(

name = '模块名',

version = '版本',

py_modules = ['phone'],

author = '作者',

author_email = '邮箱',

url = 'url地址',

description = '描述',

)

把上面的信息填写完整,然后把phone.py跟setup.py拖到phone的文件夹下。

5步造轮子:详解“Python”模块的封装与引用—并上传到PyPI社区

打开命令行,切换进phone的文件夹,执行以下命令进行安装:

python setup.py install

安装完后就可以进行调用了,比如说我们想打电话,那么需要调用phone模块下的call()函数并传入号码参数来拨打电话,如:

from phone import call

number='10086'

call(number)

然后运行就会打印出以下内容:

正在打电话给:10086

如果我们想发短信,那么同样可以调用sms()函数,并传入参数。这次我们换一种导入方式:

import phone #只导入模块

smsText='老王走了吗?'

phone.sms(smsText)

然后运行就会打印出以下内容:

发送内容为:老王走了吗?

这两种调用方法哪种都可以,只不过第一个例子是仅仅引用了phone下的call函数,而第二个是将phone模块下的函数都导入了。

当然,如果不满足本地用户使用,你也可以传到PyPI社区,供全球人使用~

5步造轮子:详解“Python”模块的封装与引用—并上传到PyPI社区

上传PyPI:

首先你需要在PyPI官网注册一个账号:

http://pypi.python.org

然后在在user/tank文件夹下创建.pypirc文件

参考代码:

[distutils]

index-servers =

pypi

[pypi]

repository: https://upload.pypi.org/legacy/

username: your username

password: your password

安装twine:

pip install twine

然后利用twine上传我们的模块到PyPI社区:在phone文件夹下执行:

twine upload dist/*

然后就可以发布到网络上让其他人共用啦~但是有时候通常会报错,前提是你的模块名字没有跟其他人的重复才行!

相关推荐