python 制作python包,封装成可用模块教程


Posted in Python onJuly 13, 2020

首先编写py程序:

printtest.py

def test():
print('print test')

将以上.py文件做成python模块,需要在相同目录下创建setup.py文件,setup.py中输入配置信息:

from setuptools import setup
setup(name='printtest',
  version='1.0',
  py_modules=['printtest'],
  )

打开终端,定位到该文件夹下,输入:

python setup.py sdist

此时在目录中生成dist文件夹,文件夹中有testpg-1.0.tar.gz文件,用户安装的话只需要testpg-1.0.tar.gz文件即可。将此文件解压得到testpg-1.0文件夹,会发现该文件夹有我们刚刚书写的3个py文件,还有一个PKG-INFO,打开该文件,会显示该模块的具体信息:由于我们没有设置,所以为UNKOWN

Metadata-Version: 1.0
Name: printtest
Version: 1.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN

终端定位到此文件夹下,输入以下命令,模块将会被安装到解释器对应的Lib/site-packages目录下:

python setup.py install

安装后,会发现Lib/site-packages目录下存在printtest.py文件和printtest-1.0-py3.6.egg-info

应用:

import printtest
printtest.test()

输出:

print test

补充知识:python 将自定义常用的一些函数封装成可以直接调用的模块方法

将常用一些的函数封装成可以直接调用的模块方法

1. 背景

在实际的操作过程中,经常会用到一个功能,如果每次编写代码的时候都进行重新编写或者打开已经编写好的函数进行复制粘贴,这样就显得很麻烦,有没有什么方法可以像导入python模块的那样,直接把要用的函数以模块名+方法的形式调用呢?

答案当然是可以的,比如做数据分析时候经常要使用的功能是:实现某一路径下的所有xlsx的合并,文件如下

python 制作python包,封装成可用模块教程

直接给出合并的函数,保留数据格式筛选的接口,将合并后的数据保存在fltered_data文件夹下的data_ok.xlsx文件中

def concat_excels(pattern):
 import pandas as pd
 import os
 import glob

 if not os.path.exists('filtered_data'):
   os.mkdir('filtered_data')

 file_paths = glob.glob(pattern)
   
 df = pd.DataFrame()
 for file_path in file_paths:
   df_ = pd.read_excel(file_path)
   df = pd.concat([df,df_])
 
 df.to_excel('filtered_data/data_ok.xlsx',index = False)
 print('Finished!')
 
if __name__ == '__main__':
 concat_excels('*.xlsx')

2. 具体步骤

第一步:首先找到当前编辑器(可能会存在多个python解析器)对应的第三方库的安装路径,如果不知道具体的位置,可以在使用的编辑器窗口输入如下代码,这里以requests库为例,查看一下第三方库的文件位置,红色标记的即是

python 制作python包,封装成可用模块教程

第二步:将上面的函数所在py文件命名,可以以自己名字的简称进行命名,即方便导入也方便自己记住。然后将保存好的py文件移动到上面的红色标记下,如下图

python 制作python包,封装成可用模块教程

第三步:在欲合并的文件夹下创建一个py文件(比如命名为:合并数据.py),如下

python 制作python包,封装成可用模块教程

第四步:编辑代码,直接导入模块和方法完成文件数据的合并,代码运行截图如下,这样就是实现了多文件的合并,括号中保留了合并数据的筛选格式,方便进行之后不同格式的Excel文件的合并

from 模块名 import * 意思是导入该模块的所有的方法(可以直接调用函数)

python 制作python包,封装成可用模块教程

3. 扩展

通过这种方式,就可以把我们在日常工作中经常使用的方法(要实现的功能)都放置在以自己命名的py文件中,使用的时候直接就可以调用非常简单,如果需要添加,就打开这个py文件,把代码复制粘贴进去就可以了。

比如在处理图像时候,可以直接把图片的读取过程中色彩的矫正和图片的显示封装成函数,在使用的时候一行代码就可以实现之前繁杂的程序

python 制作python包,封装成可用模块教程

使用演示:

python 制作python包,封装成可用模块教程

以上这篇python 制作python包,封装成可用模块教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
Python生成验证码实例
Aug 21 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
python使用tornado实现登录和登出
Jul 28 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
python计算无向图节点度的实例代码
Nov 22 Python
pycharm的python_stubs问题
Apr 08 Python
pycharm 关闭search everywhere的解决操作
Jan 15 Python
python爬取抖音视频的实例分析
Jan 19 Python
用python实现监控视频人数统计
May 21 Python
通过Python实现Payload分离免杀过程详解
Jul 13 #Python
python上selenium的弹框操作实现
Jul 13 #Python
python如何导入依赖包
Jul 13 #Python
python入门:argparse浅析 nargs='+'作用
Jul 12 #Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 #Python
Python实现封装打包自己写的代码,被python import
Jul 12 #Python
Django封装交互接口代码
Jul 12 #Python
You might like
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
jquery计算出left和top,让一个div水平垂直居中的简单实例
2016/07/13 Javascript
Node.js中防止错误导致的进程阻塞的方法
2016/08/11 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
详解微信JS-SDK选择图片遇到的坑
2018/08/15 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
详解python如何调用C/C++底层库与互相传值
2016/08/10 Python
Python生成随机数组的方法小结
2017/04/15 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python可迭代对象去重实例
2020/05/15 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
简述安装Slackware Linux系统的过程
2012/01/12 面试题
《李广射虎》教学反思
2014/04/27 职场文书
综合实践活动总结
2014/05/05 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
大学生在校表现评语
2014/12/31 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
MySQL基于索引的压力测试的实现
2021/11/07 MySQL