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-info
与demo
两个文件夹下的文件;
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