利用distutils生成自己的函数库

利用distutils生成自己的函数库


前言

假定编写了一个四则运算的库。

def add(x,y):
    return x+y

def division(x,y):
    return x/y

def multiply(x,y):
    return x*y

def substract(x,y):
    return x-y

将代码保存到arithmetic.py文件中,然后复制到需要的文件目录中以备使用。比如在一个简单的计算项目中,我们可以这样使用刚刚编好的库:

import arithmetic
print (arithmetic.add(2,3))
print (arithmetic.division(2,8))
...

如果只是个人项目,或者很小的团队协作,这种做法没问题。但如果团队比较大,就有如下几个问题:

  1. 程序的发布。如果版本更新了,如何快速地发布给团队中的所有人。
  2. 保证版本同步。arithmetic.py不带任何版本信息,不利于团队成员自检版本。

遇到这些问题,我们有哪些比较好的解决方式呢?

一、使用distutils

显然,这个四则运算程序库最好是像requests之类的优秀的第三方库一样,可以方便地下载,安装,升级,卸载,也就是说能够放到PyPI上面,也能够很好地更pip或yolk这样的工具集成。Python作为“自带电池”的高级语言,自然提供了这方面的支持,那就是distutils标准库。distutils标准库至少提供了一下几方面内容:

  1. 支持包的构建、安装、发布(打包)。
  2. 支持PyPI的登记、上传。
  3. 定义了扩展指令的协议,包括distutils.cmd.Command基类、distutils.commands和distutils.key_words等入口点,为setuptools和pip等提供了基础设施。

要使用distutils,按习惯需要编写一个setup.py文件,作为后续操作的入口点。在arithmetic.py同层目录,创建一个setup.py文件。

#tree.
.
|------arithmetic.py
|------setup.py

它的内容如下:

from distutils.core import setup
setup(
    name='arithmetic',
    version='1.0',
    py_modules=['arithmetic']
)

一眼就可以看出,setup.py文件的意义是执行时调用distutils.core.setup()函数,而实参是通过明明参数指定的。name参数指定的是包名;version指定版本;而py_modules参数是一个序列类型,里面包含需要安装的Python文件,在本例中就是arithmetic.py。

编写setup.py文件后,就可以使用python setup.py install把它安装到系统中了。

项目所在路径>python setup.py install
running install
running build
running build_py
copying arithmetic.py -> build\lib
running install_lib
copying build\lib\arithmetic.py -> D:\Anaconda3\Lib\site-packages
byte-compiling D:\Anaconda3\Lib\site-packages\arithmetic.py to arithmetic.cpython-37.pyc
running install_egg_info
Removing D:\Anaconda3\Lib\site-packages\arithmetic-1.0-py3.7.egg-info
Writing D:\Anaconda3\Lib\site-packages\arithmetic-1.0-py3.7.egg-info

安装成功后,我们试一下。

>>> import arithmetic
>>> dir(arithmetic)
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'division', 'multiply', 'substract']
>>> arithmetic(1,2)
>>> arithmetic.add(1,2)
3

完全符合预期!

二、使用pastescript

利用pastescript的paster命令,可以让setup.py文件的创建,更加规范和快捷。



但是我自己也还没玩明白,等闹明白了,再分享给大家🤣


总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值