利用setuptools打包python程序的方法步骤


Posted in Python onJanuary 18, 2020

一、准备工程文件

1.创建工程leeoo

利用setuptools打包python程序的方法步骤

2.在工程根目录下创建setup.py文件

利用setuptools打包python程序的方法步骤

3.在工程根目录下创建同名package

利用setuptools打包python程序的方法步骤

二、编辑setup.py

1.编辑setup.py文件

from setuptools import setup, find_packages

setup(
  name='leeoo', # 包的名称
  version='1.0', # 版本号
  packages=find_packages(), # 动态获取packages
  description="leeoo package",
  author='Leo',
  author_email='leo4774177@gmail.com',
  url="None",
)

2.参数说明

利用setuptools打包python程序的方法步骤

三、编写测试代码

1.在leeoo package下创建pkg

利用setuptools打包python程序的方法步骤

2.test.py文件内容

def testfunc():
  print("This is a test function..")


class TestClass(object):
  def __init__(self, name):
    self.name = name
    print("This is a test Class..")

  def get_name(self):
    return self.name

3.将test.py中的内容全部导入到leeoo的__init__.py中

利用setuptools打包python程序的方法步骤

这样,以后import leeoo后,就可以直接使用leeoo.testfunc()了。

四、打包

1.命令行进入工程根目录

利用setuptools打包python程序的方法步骤

2.运行命令

(venv) D:\pycharm_workspace\leeoo>python setup.py check
running check
(venv) D:\pycharm_workspace\leeoo>python setup.py bdist_egg
running bdist_egg
running egg_info
creating leeoo.egg-info
writing leeoo.egg-info\PKG-INFO
writing dependency_links to leeoo.egg-info\dependency_links.txt
writing top-level names to leeoo.egg-info\top_level.txt
writing manifest file 'leeoo.egg-info\SOURCES.txt'
reading manifest file 'leeoo.egg-info\SOURCES.txt'
writing manifest file 'leeoo.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\leeoo
copying leeoo\__init__.py -> build\lib\leeoo
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\leeoo
copying build\lib\leeoo\__init__.py -> build\bdist.win-amd64\egg\leeoo
byte-compiling build\bdist.win-amd64\egg\leeoo\__init__.py to __init__.cpython-37.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist\leeoo-1.0-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)

3.查看生成的文件

在工程根目录下,可以看到生成了一系列文件:

利用setuptools打包python程序的方法步骤

五、安装leeoo

1.在工程目录下(setup.py所在目录)运行命令

D:\pycharm_workspace\leeoo>python setup.py install
running install
running bdist_egg
running egg_info
writing leeoo.egg-info\PKG-INFO
writing dependency_links to leeoo.egg-info\dependency_links.txt
writing top-level names to leeoo.egg-info\top_level.txt
reading manifest file 'leeoo.egg-info\SOURCES.txt'
writing manifest file 'leeoo.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\leeoo
copying build\lib\leeoo\__init__.py -> build\bdist.win-amd64\egg\leeoo
byte-compiling build\bdist.win-amd64\egg\leeoo\__init__.py to __init__.cpython-37.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying leeoo.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist\leeoo-1.0-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing leeoo-1.0-py3.7.egg
Copying leeoo-1.0-py3.7.egg to d:\dev_apps\anaconda5.3.0\lib\site-packages
Adding leeoo 1.0 to easy-install.pth file

Installed d:\dev_apps\anaconda5.3.0\lib\site-packages\leeoo-1.0-py3.7.egg
Processing dependencies for leeoo==1.0
Finished processing dependencies for leeoo==1.0

2.查看安装好的文件

我们看到上述打印日志中,将leeoo-1.0-py3.7.egg安装到了d:\dev_apps\anaconda5.3.0\lib\site-packages。

利用setuptools打包python程序的方法步骤

六、使用leeoo

新建一个项目,然后导入leeoo:

import leeoo

leeoo.testfunc()
obj = leeoo.TestClass("demo")
print(obj.get_name())

也可以使用:

from leeoo.pkg import test

test.testfunc()
obj = test.TestClass("demo")
print(obj.get_name())

当然也可以直接将testfunc()和TestClass导入,但是容易引起命名冲突。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的字典使用分享
Jul 31 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
python写程序统计词频的方法
Jul 29 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python箱型图处理离群点的例子
Dec 09 Python
Python实现分数序列求和
Feb 25 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
如何使用Pytorch搭建模型
Oct 26 Python
Python修改DBF文件指定列
Dec 19 Python
Python提取PDF指定内容并生成新文件
Jun 09 Python
python字典的元素访问实例详解
Jul 21 Python
python计算二维矩形IOU实例
Jan 18 #Python
解决python replace函数替换无效问题
Jan 18 #Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 #Python
pytorch 状态字典:state_dict使用详解
Jan 17 #Python
Python标准库itertools的使用方法
Jan 17 #Python
Python实现投影法分割图像示例(二)
Jan 17 #Python
Python常用库大全及简要说明
Jan 17 #Python
You might like
PHP中strtotime函数使用方法分享
2012/01/10 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
PHP实现重载的常用方法实例详解
2017/10/18 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
符合标准的js表单提交的代码
2007/09/13 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
Vertx基于EventBus发送接受自定义对象
2020/11/16 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
python分割列表(list)的方法示例
2017/05/07 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
numpy数组拼接简单示例
2017/12/15 Python
简单了解python模块概念
2018/01/11 Python
python3.5安装python3-tk详解
2019/04/26 Python
简单了解python元组tuple相关原理
2019/12/02 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
竞选班长的演讲稿
2014/04/24 职场文书
2014年收银工作总结
2014/11/13 职场文书
Go timer如何调度
2021/06/09 Golang