利用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控制台显示时钟的示例
Feb 24 Python
python直接访问私有属性的简单方法
Jul 25 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
Python 给定的经纬度标注在地图上的实现方法
Jul 05 Python
python爬虫模块URL管理器模块用法解析
Feb 03 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
Python模拟FTP文件服务器的操作方法
Feb 18 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
Python Celery异步任务队列使用方法解析
Aug 10 Python
利用python 下载bilibili视频
Nov 13 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 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学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
js文本框输入内容智能提示效果
2015/12/02 Javascript
js实现文字滚动效果
2016/03/03 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
360doc网站不登录就无法复制内容的解决方法
2018/01/27 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
python连接oracle数据库实例
2014/10/17 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python里反向传播算法详解
2020/11/22 Python
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
贸易跟单员英文求职信
2014/04/19 职场文书
金融事务专业求职信
2014/04/25 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
师德先进个人材料
2014/12/20 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js