这章给大家介绍,如何封装一个简单的python库

首先创建一个以下型式的文件结构

rootFile/setup.py

example_package/

__init__.py

example_module.py

example_package2/

__init__.py

example_module.py

其中的两个__init__.py可以是一个空文件,但是它是导入package所必需的文件,用来,所以请务必创建,__init__.py中可以编写Python代码,但是不建议这么做,因为实际的逻辑可以在模块中实现,__init__.py应尽量轻。

输入在你的python文件中分别添加以下内容

#rootFile/example_package/example_module.py:

classmodule_class:def __init__(self):pass

defprint_hello():print('This is my first module')

myName= 'jobsofferings'

defprintMyName():print(myName)

#rootFile/example_package/example_package2/example_module.py:

classmodule_class:def __init__(self):pass

defprint_hello():print('This is my second module')

myName= 'jobsofferings'

defprintMyName():print(myName)

#setup.py:

importsetuptools

setuptools.setup(

name="rootFile",

version="0.0.1",

author="jobsofferings",

author_email="youremail@xxx.com",

description="example package",

packages=['example_package','example_package.example_package2'],

)

name是程序包的名称。该名称可以是任何名称,只要仅包含字母、数字、 _ 和 - 。若您想将此程序包上传至pypi.org,请务必使用您的用户名进行更新,因为这样可以确保您不会尝试上传与上传软件包时已经存在的软件包名称相同的软件包。

version是软件包的版本。

author和author_email用于标识软件包的作者,分别用来标明作者名称与邮箱。

description是该软件包的简短描述。

long_description是程序包的详细说明。这在Python软件包索引的软件包详细信息软件包中显示。在这种情况下,通常的模式是从README.md加载详细描述。

long_description_content_type告诉索引用于长描述的标记类型,在此情况下,它是Markdown语言

packages是应该包含在分发软件包中的所有Python导入软件包的列表。无需手动列出每个程序包,我们可以使用find_packages()自动发现所有程序包和子程序包。以上示例我们使用了手动列出的方式。

classifiers为您的软件包提供额外信息。

这时候,我们就可以着手将我们的package打包了

进入管理员环境下的命令行工具中,进入rootFile文件夹位置,可以复制下这个文件地址,cd进入。执行:

Python setup.py install

若命令行中打印出的信息显示无误,则您的package已经打包完成,我们在同一磁盘的其他文件夹中创建一个test.py进行测试

#test.py:

importexample_package.example_module as module1importexample_package.example_package2.example_module as module2

module1.module_class.print_hello()

module1.printMyName()print(module1.myName)

module2.module_class.print_hello()

module2.printMyName()print(module2.myName)

运行test.py

输出:

>>> This ismy first module>>>jobsofferings>>>jobsofferings>>> This ismy second module>>>jobsofferings>>> jobsofferings

则说明您的package已经打包完成,由于通过包管理工具setuptools发布,您可以在您的python安装目录下找到这个打包文件,后缀为.egg,但egg包不一定是扩展名是egg的,其实在linux里面是不区分扩展名的。在理想情况中,egg 是一个使用zip 压缩的文件,类似于java中的jar包,其中包括了所有需要的包文件。

您也可以在rootFile下找到这个egg文件,但事实上将dist文件夹删掉之后,还是可以使用这个package,因为import导入的搜索路径为程序主目录、PYTHONPATH目录、标准链接库目录、.pth文件目录,所以程序会到您的python安装目录下找到这个打包文件。

进入命令行工具中,输入where python可以找到您的python安装路径,进入./Lib/site-packages,在这个文件夹中就可以看到您的打包文件。

python封装介绍_谈python3的封装相关推荐

  1. python还款程序_使用Python3 编写简单信用卡管理程序

    1.程序执行代码: #Author by Andy #_*_ coding:utf-8 _*_ import os,sys,time Base_dir=os.path.dirname(os.path. ...

  2. python turtle 绘图_谈一下Pycharm中关联系统Python解释器的方法

    大家知道,PyCharm是一款著名的Python IDE开发工具,是拥有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,具备基本的调试.语法高亮.Project管理.代码跳转.智能提示 ...

  3. python asyncio教程_在Python3中使用asyncio库进行快速数据抓取的教程

    web数据抓取是一个经常在python的讨论中出现的主题.有很多方法可以用来进行web数据抓取,然而其中好像并没有一个最好的办法.有一些如scrapy这样十分成熟的框架,更多的则是像mechanize ...

  4. Python进阶(七)浅谈python3和Python2的区别

    文章目录 一.前言 二.print函数 2.1 举例 三.reduce()函数 四.try except 五.打开文件 六.从键盘录入一个字符串 七.整形除法自动转为float 八.新的字符串格式化方 ...

  5. python逗号代码_基于Python3 逗号代码 和 字符图网格(详谈)

    逗号代码 假定有下面这样的列表: spam=['apples','bananas','tofu',' cats'] 编写一个函数,它以一个列表值作为参数,返回一个字符串.该字符串包含所有表项,表项之间 ...

  6. python 归一化还原_对python3 一组数值的归一化处理方法详解

    1.什么是归一化: 归一化就是把一组数(大于1)化为以1为最大值,0为最小值,其余数据按百分比计算的方法.如:1,2,3.,那归一化后就是:0,0.5,1 2.归一化步骤: 如:2,4,6 (1)找出 ...

  7. python无法打开_脚本 - Python3.8突然无法运行

    问题: 我一直可以从终端python运行(运行python解释器)脚本,但今天突然无法从shell运行python脚本. hello.py包含:#!/usr/bin/python3 print('He ...

  8. python ssl模块_转 Python3 ssl模块不可用的问题

    编译安装完Python3之后,使用pip来安装python库,发现了如下报错: $ pip install numpy pip is configured with locations that re ...

  9. python 可执行文件大_为什么 python3.6 的动态链接库比 python2.7 的可执行文件大了很多?...

    我的机器是 ubuntu 16.04LTS, python2.7 和 python3.6 都是 apt-get 安装的. python2.7 的可执行文件的体积是 3.4M : bash-4.3$ l ...

最新文章

  1. 将企业安全基线复制上云,实现云上IT运维的持续风控
  2. android onitemclicklistener 参数,android – 对listview中的项使用setOnItemClickListener
  3. 基于狄利克雷-多项式分布做文档聚类代码(dirichlet multinomial mixture model)
  4. devops 开发_开发五年,DevOps手册问世
  5. objective-c 类别
  6. WPF中ListBox的绑定
  7. 智慧林业整体解决方案_智慧农贸市场整体解决方案——前期调研篇
  8. 薄板冲压成型过程的计算机仿真与应用,薄板冲压成型过程的计算机仿真与应用_钟志华.pdf...
  9. bzoj 4537: [Hnoi2016]最小公倍数 分块+并查集
  10. 怎么选最快dns服务器,如何选择DNS服务器网速最快?DNS优选win7win10系统设置方法图文教程...
  11. 2020秋 英文科技论文写作与学术报告-期末
  12. 直下式LED背光源和侧入式LED背光源的区别以及哪个好呢
  13. php采集百度热搜,爬取百度热搜
  14. 拥抱变化—— 可扩展性杂谈
  15. 【思维导图怎么画】万彩脑图大师教程 | 添加链接
  16. linux 二次封装 释放,Linux必学的60个命令(二)
  17. 【WIN32之旅】WINDOWS错误处理与参考(四)
  18. 生活中的收支明细该如何记录
  19. [QNX Hypervisor 2.2用户手册]10.4 vdev hpet
  20. 华为防火墙ftp_华为防火墙如何配置ftp服务器映射到外网

热门文章

  1. 企业实战_21_MyCat_keepalived 安装配置验证
  2. Linux操作系统需要做的准备
  3. CentOs搭建svn
  4. 字典 学生成绩等级_python-列表及字典进阶
  5. linux下c语言编程gedit,Ubuntu Linux下实现Gedit支持NesC语法高亮
  6. arm linux 脚本 排序,arm-linux连接以及连接脚本
  7. 中线提取算法_综述|线结构光中心提取算法研究发展
  8. python下载晚上excel_Python自动操控excel,一小时解决你一天的工作
  9. python深度优先_python数据结构之图深度优先和广度优先实例详解
  10. mysql架构深入_mysql性能优化2:深入认识mysql体系架构