利用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 相关文章推荐
详解python3百度指数抓取实例
Dec 12 Python
Python批量查询域名是否被注册过
Jun 21 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
python os.listdir按文件存取时间顺序列出目录的实例
Oct 21 Python
python退出命令是什么?详解python退出方法
Dec 10 Python
python异步实现定时任务和周期任务的方法
Jun 29 Python
django框架用户权限中的session缓存到redis中的方法
Aug 06 Python
简单的Python调度器Schedule详解
Aug 30 Python
Django密码存储策略分析
Jan 09 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
Django自定义YamlField实现过程解析
Nov 11 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
给多个地址发邮件的类
2006/10/09 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
详解Angular中实现自定义组件的双向绑定的两种方法
2018/11/23 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
Python中的高级数据结构详解
2015/03/27 Python
Python中返回字典键的值的values()方法使用
2015/05/22 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python变量赋值的秘密分享
2018/04/03 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
python绘制多个曲线的折线图
2020/03/23 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
python操作gitlab API过程解析
2019/12/27 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
元旦标语大全
2014/10/09 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
python非标准时间的转换
2021/07/25 Python
一文解答什么是MySQL的回表
2022/08/05 MySQL