setuptools使用

setuptools是python标准的打包分发工具,通过编写简短的setup.py文件,能够轻松实现python应用的打包;

1. setuptools安装

2. 示例

2.1 准备相关文件

├── demo
│   ├── __init__.py
│   └── module.py
└── setup.py

其中,setup.py文件中内容如下:

from setuptools import find_packages, setup

setup(
    name = 'demo',
    version = '0.0.1', 
    packages = find_packages()
)
  • name = 'demo'表示打包后的包名为demo;
  • version表示包的版本号;
  • packages表示打包后的包,所依赖的包,find_packages()表示会自动查询当前目录下的所有包(即所有包含__init__.py文件的目录);

其中,__init__.py为空文件,用于表示demo是一个包;

其中,module.py是一个模块,内容随意,我这里是:

def foo_module():
    print("foo_module")

2.2 打包

执行

python setup.py bdist_egg

完成后,新的目录结构如下:

├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── demo
│           ├── __init__.py
│           └── module.py
├── demo
│   ├── __init__.py
│   └── module.py
├── demo.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   └── top_level.txt
├── dist
│   └── demo-0.0.1-py3.7.egg
└── setup.py
  • build:
  • demo.egg-info:
  • dist: 该目录下是一个.egg文件,一种压缩格式;

dist解压:

执行:

cd dist
unzip -d tmp demo-0.0.1-py3.7.egg

目录结构如下:

tmp/
├── demo
│   ├── __init__.py
│   ├── module.py
│   └── __pycache__
│       ├── __init__.cpython-37.pyc
│       └── module.cpython-37.pyc
└── EGG-INFO
    ├── dependency_links.txt
    ├── PKG-INFO
    ├── SOURCES.txt
    ├── top_level.txt
    └── zip-safe
  • dist包含了demo.egg-infodemo两个文件夹下的文件;

2.3 安装

当程序打包完成之后,可以拿到相同的环境下进行安装;

执行:

python setup.py install

就可以在当前的虚拟环境下有此包,如下:

***/base/lib/python3.7/site-packages

2.4 使用

在新的环境中安装成功后,使用方式如下:

from demo import module

module.foo_module()

输出:

foo_module

2.5 卸载

在安装成功的虚拟环境中卸载安装的包,方式如下:

pip uninstall demo

3. 进阶示例

posted @ 2021-06-02 22:24  chenzhen0530  阅读(353)  评论(0编辑  收藏  举报