利用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数据类型转换函数总结
Mar 11 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
Python读取mat文件,并转为csv文件的实例
Jul 04 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
python装饰器练习题及答案
Nov 01 Python
Python内置加密模块用法解析
Nov 25 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
python+django+selenium搭建简易自动化测试
Aug 19 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字符串分割函数explode的实例代码
2013/02/07 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JS图片等比例缩放方法完整示例
2016/08/03 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
简谈创建React Component的几种方式
2019/06/15 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
Django框架验证码用法实例分析
2019/05/10 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
Python如何操作docker redis过程解析
2020/08/10 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
H5最强接口之canvas实现动态图形功能
2019/05/31 HTML / CSS
如何设置Java的运行环境
2013/04/05 面试题
Java servlet面试题
2012/03/04 面试题
路政管理专业推荐信
2013/11/11 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
揭牌仪式主持词
2014/03/19 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
合同范本之电脑出租
2019/08/13 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js