利用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的web.py框架并从hello world开始编程
Apr 25 Python
Python最基本的输入输出详解
Apr 25 Python
举例详解Python中threading模块的几个常用方法
Jun 18 Python
Python开发的HTTP库requests详解
Aug 29 Python
Python中的id()函数指的什么
Oct 17 Python
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python控制键盘鼠标pynput的详细用法
Jan 28 Python
pytorch自定义初始化权重的方法
Aug 17 Python
查看jupyter notebook每个单元格运行时间实例
Apr 22 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
关于Javascript与iframe的那些事儿
2013/07/04 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
jQuery中slice()方法用法实例
2015/01/07 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
JavaScript实现格式化字符串函数String.format
2016/12/16 Javascript
vue router使用query和params传参的使用和区别
2017/11/13 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
浅谈vue中get请求解决传输数据是数组格式的问题
2020/08/03 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python系列 文件操作的代码
2019/10/06 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
学习python需要有编程基础吗
2020/06/02 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
晚会邀请函范文
2014/01/24 职场文书
机关出纳岗位职责
2014/04/03 职场文书
离婚代理词范文
2015/05/23 职场文书
2015年物流客服工作总结
2015/07/27 职场文书
新学期家长寄语2016
2015/12/03 职场文书
导游词之四川武侯祠
2019/10/21 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫