欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python的setuptools详解【2】find_packages()

发布时间:2025/3/21 python 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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()的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。