Python的setuptools详解【2】find_packages()

目录

一、提要

二 实验2:生成多包项目,并安装测试

参考文章


一、提要

python中安装包的方式有很多种:

  1. 源码包:python setup.py install
  2. 在线安装:pip install 包名
  3. 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_packages

setup(
    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 - 博客园

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无水先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值