zoukankan      html  css  js  c++  java
  • [工具] 利用setuptools打包python程序

    一、准备工程文件

    1.创建工程leeoo

    2.在工程根目录下创建setup.py文件

    3.在工程根目录下创建同名package

    二、编辑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.参数说明

    三、编写测试代码

    1.在leeoo package下创建pkg

    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中

    这样,以后import leeoo后,就可以直接使用leeoo.testfunc()了。

    四、打包

    1.命令行进入工程根目录

    2.运行命令

    (venv) D:pycharm_workspaceleeoo>python setup.py check
    running check
    (venv) D:pycharm_workspaceleeoo>python setup.py bdist_egg
    running bdist_egg
    running egg_info
    creating leeoo.egg-info
    writing leeoo.egg-infoPKG-INFO
    writing dependency_links to leeoo.egg-infodependency_links.txt
    writing top-level names to leeoo.egg-info	op_level.txt
    writing manifest file 'leeoo.egg-infoSOURCES.txt'
    reading manifest file 'leeoo.egg-infoSOURCES.txt'
    writing manifest file 'leeoo.egg-infoSOURCES.txt'
    installing library code to builddist.win-amd64egg
    running install_lib
    running build_py
    creating build
    creating buildlib
    creating buildlibleeoo
    copying leeoo\__init__.py -> buildlibleeoo
    creating builddist.win-amd64
    creating builddist.win-amd64egg
    creating builddist.win-amd64eggleeoo
    copying buildlibleeoo\__init__.py -> builddist.win-amd64eggleeoo
    byte-compiling builddist.win-amd64eggleeoo\__init__.py to __init__.cpython-37.pyc
    creating builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infoPKG-INFO -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infoSOURCES.txt -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infodependency_links.txt -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-info	op_level.txt -> builddist.win-amd64eggEGG-INFO
    zip_safe flag not set; analyzing archive contents...
    creating dist
    creating 'distleeoo-1.0-py3.7.egg' and adding 'builddist.win-amd64egg' to it
    removing 'builddist.win-amd64egg' (and everything under it)

    3.查看生成的文件

    在工程根目录下,可以看到生成了一系列文件:

    4.几种常用打包格式

    1)打包成egg

    python setup.py bdist_egg #生成egg文件,支持easy_install安装

    安装:

    easy_install xx.egg

    2)打包成exe

    python setup.py bdist_wininst #生成exe文件

    支持windows下的分发。

    3)打包成*.zip、*.tar.gz

    python setup.py sdist         #生成*.zip/*.tar.gz文件,支持pip安装

    4)打包成*.whl

    python setup.py bdist_wheel     #生成.whl文件

    安装:

    pip install xxx.whl

    五、安装leeoo

    1.在工程目录下(setup.py所在目录)运行命令

    D:pycharm_workspaceleeoo>python setup.py install
    running install
    running bdist_egg
    running egg_info
    writing leeoo.egg-infoPKG-INFO
    writing dependency_links to leeoo.egg-infodependency_links.txt
    writing top-level names to leeoo.egg-info	op_level.txt
    reading manifest file 'leeoo.egg-infoSOURCES.txt'
    writing manifest file 'leeoo.egg-infoSOURCES.txt'
    installing library code to builddist.win-amd64egg
    running install_lib
    running build_py
    creating builddist.win-amd64egg
    creating builddist.win-amd64eggleeoo
    copying buildlibleeoo\__init__.py -> builddist.win-amd64eggleeoo
    byte-compiling builddist.win-amd64eggleeoo\__init__.py to __init__.cpython-37.pyc
    creating builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infoPKG-INFO -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infoSOURCES.txt -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-infodependency_links.txt -> builddist.win-amd64eggEGG-INFO
    copying leeoo.egg-info	op_level.txt -> builddist.win-amd64eggEGG-INFO
    zip_safe flag not set; analyzing archive contents...
    creating 'distleeoo-1.0-py3.7.egg' and adding 'builddist.win-amd64egg' to it
    removing 'builddist.win-amd64egg' (and everything under it)
    Processing leeoo-1.0-py3.7.egg
    Copying leeoo-1.0-py3.7.egg to d:dev_appsanaconda5.3.0libsite-packages
    Adding leeoo 1.0 to easy-install.pth file
    
    Installed d:dev_appsanaconda5.3.0libsite-packagesleeoo-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_appsanaconda5.3.0libsite-packages。

    六、使用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导入,但是容易引起命名冲突。

    (>‿◠)✌

  • 相关阅读:
    1230 jquery
    1221 监听事件
    1218 dom表格元素操作
    1216 DOM
    Java中对小数的向下取整,向上取整
    Mysql中 在SQL语句里进行日期格式转换
    一些常用格式化。价格、日期等 持续更新
    List对象里面根据某一字段去重
    java 后端 初始化图片像素(1980 x 1080)大小
    swagger里面测试List数据格式
  • 原文地址:https://www.cnblogs.com/leokale-zz/p/12207923.html
Copyright © 2011-2022 走看看