Python的setuptools详解【2】find_packages()
一、提要
python中安装包的方式有很多种:
- 源码包:python setup.py install
- 在线安装:pip install 包名
- easy_install 包名
如何创建以上的包,我们在上文展示如何通过"Python蛋",将自己的一个程序安装到python环境中。
本文重点指出,如何使用find_packages()将更多个资源打包成python蛋,并解释如何调用。
二 实验2:生成多包项目,并安装测试
1.准备工作
如果说 在每个带有——init——。py的目录,都市# 当前测试的目录是 /tmp/demo;创建目录-文件结构:`-- demo|-- helloapp| |-- hello.py| `-- __init__.py|-- __init__.py|-- myapp| |-- __init__.py| `-- myapp.py`-- setup.py# 2.编辑 setup.py from setuptools import setup, find_packagessetup(name="demo",version="1.0",author="zbj",author_email="22@qq.com",packages=find_packages( exclude=["*.tests", "*.tests.*", "tests"] ) #排除tests等 )# 3.编辑 hello.py def hello_func():print("HelloWorld")# 4.编辑 myapp.py def myapp_func():print("嘿嘿嘿")
这里专门解释find_packages()是啥东西?
就是在当前目录,以及当前目录下,所有的python包(带__init__.py的目录)都搜索,并一起打成egg文件包。
find_packages(xyz),就是搜索名称为xyz的包,以及xyz的下层目录的包搜索出来,并一起打成egg文件包。
2.源码安装
# 进入setup.py所在的那层目录 cd /tmp/demo# 检查setup.py 是否有错误(warning不是错误) python setup.py check# 安装 python setup.py install
用tree查看
3.结果
打包之后多出两个文件夹,分别是demo.egg-info和dist。demo.egg-info是必要的安装信息,
而dist中的压缩包就是安装包,此时默认的egg包,egg包就是zip包,如果需要使用egg包,name将egg后缀改成zip解压即可
用unzip查看egg:
$ cd /usr/local/lib/python3.8/dist-packages #进入python包目录
$ unzip -l demo-1.0-py3.8.egg
Archive: demo-1.0-py3.8.egg
Length Date Time Name
--------- ---------- ----- ----
174 2021-11-10 16:13 EGG-INFO/PKG-INFO
192 2021-11-10 16:13 EGG-INFO/SOURCES.txt
1 2021-11-10 16:13 EGG-INFO/dependency_links.txt
15 2021-11-10 16:13 EGG-INFO/top_level.txt
1 2021-11-10 16:13 EGG-INFO/zip-safe
0 2021-11-10 16:03 helloapp/__init__.py
42 2021-11-10 16:10 helloapp/hello.py
140 2021-11-10 16:13 helloapp/__pycache__/__init__.cpython-38.pyc
261 2021-11-10 16:13 helloapp/__pycache__/hello.cpython-38.pyc
0 2021-11-10 16:03 myapp/__init__.py
45 2021-11-10 16:11 myapp/myapp.py
137 2021-11-10 16:13 myapp/__pycache__/__init__.cpython-38.pyc
260 2021-11-10 16:13 myapp/__pycache__/myapp.cpython-38.pyc
--------- -------
1268 13 files
4.测试
测试的时候需要注意导包路径和当前所在路径
目前所在路径是: /tmp/demo
直接进入python解释器: python3(我自己安装的python3版本)
以上将两个包内的文件通过python蛋装入系统。注意,不同的包将有不同的from语句加载。
参考文章
Python打包之setuptools - 我用python写Bug - 博客园
Python的setuptools详解【2】find_packages()相关推荐
- Python的setuptools详解【3】打包wheel并提交给pypi
一.说明 上文说,如何用setup.py打包成egg包,继而又有find_package()函数用法,本篇专门介绍,如何用setuptools打包成不同的软件包. 首先需要保证你有最新版的setupt ...
- Python的setuptools详解【1】
一 基本概念 1.什么是setuptools setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.所谓分发,就是将 ...
- python20191031_20191031:Python取反运算详解
20191031:Python取反运算详解 取反运算:~3 == 4 1.对于数字 3 =======>转换为二进制表示为011 2.对011取反为100 3.为什么表示-4 a.计算机用补码表 ...
- Python字符编码详解
Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- python变量类型-Python 变量类型详解
变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整 ...
- python安装教程windows-windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- python语言编程基础-Python语言入门详解!快速学成Python!
原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...
最新文章
- tornado源码分析
- 外媒:苹果自动驾驶裁员表明其AI战略发生巨变
- 3号团队-团队任务4:每日例会(2018-12-3)
- RedisTemplate方法的一些简单运用
- Linux安装Gradle
- springmvc导出excel并弹出下载框
- VTK:Utilities之AnimationScene
- js移除某个class_用JS添加和删除class类名
- 自定义控件_VIewPager显示多个Item
- 企业实战(Jenkins+GitLab+SonarQube)_12_Jenkins+soanr服务器搭建和代码检查
- linux内存管理之RSS和VSZ的区别
- 代码审计_md5()函数
- php后台代码自动生成程序,Thinkphp自定义代码生成工具及用法说明(附下载地址)...
- matlab中频谱的实现,如何在MATLAB中实现频谱核函数?
- iOS之healthKit
- 有一行电文,已按以下规律译成密码: A-Z a-z B-Y b-y C-X c-x,即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程将密码译回原文,并
- Selenium使用自带浏览器自动化
- Win10开电脑热点以后手机连接会IP配置失败或者一直显示获取IP中
- mysql查询1970年以后出生的人_1970年属狗女一生命运,70年属狗人一生灾难有哪些...
- 软件工程经济学期末复习第二章
热门文章
- sklearn 笔记整理:sklearn.mertics
- 错误解决 :Microsoft Visual C++ 14.0 is require Microsoft Visual C++ Builder 包丢失或者损坏
- 文巾解题 793. 阶乘函数后 K 个零
- python应用实战案例:python如何实现异步爬虫?
- MATLAB从入门到精通-MATLAB结构矩阵的输出
- Transformer入门篇-深度万字长文带你轻松入门深度学习框架
- 化整为零,一步一步教你搭建Prometheus监控报警系统
- 【机器学习算法-python实现】K-means无监督学习实现分类
- sed命令详解--转
- CVPR 2015深度学习回顾