setuptools
- Python标准的打包分发工具
- 使用简单的
setup.py
文件,将Python应用打包
- 最基础的
setup.py
文件
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name='MyDemo', # 应用名
version='1.0', # 版本号
packages=['mydemo'], # 包括安装包在内的Python包
)
- 一个复杂的
setup.py
文件
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name='MyApp', # 应用名
version=about['__version__'], # 版本号
package_dir=[ # 安装包
'ui': 'ui/page',
'openAPI': 'openAPI/utils'
],
packages=find_packages(), # 自动搜索python包,包括在安装包内的python包
install_requires=[ # 依赖列表,自动安装依赖
'Flask>=0.10',
'Flask-SQLAlchemy>=1.5,<=2.1',
],
include_package_data=True, # 地洞清单文件MANIFEST.in
exclude_package_date={'':['.gitignore']} # 将所有".gitignore"文件排除在包外
# 描述信息--部分参数提供了更多当前应用的细节信息,对打包安装并无任何影响
author='Amey', # 作者
author_email='example@email.com', # 邮件
description='This is a sample package',
python_requires='>=3.6.0', # python版本
license="MIT",
keyswords="A sample example",
url="http://example.com/HelloWorld",# 项目主页
long_description=__doc__ # 从代码中获取文档注释
)
在清单文件 MANIFEST.in 中,列出想要在保内引入的目录路径:
recursive-include mydemo/xxx *
执行安装文件
- 创建egg包
python setup.py bdist_egg
- 在当前目录下的"dist"目录内创建一个名为"MyDemo-1.0-py3.7.egg"的文件
- 目录多了"bulid"和"MyDemo.egg-info"子目录来存放打包的中间结果
- 创建tar.gz包
python setup.py adist --formats=gztar
新增"MyDemo-1.0.tar.gz"文件
- 安装应用
python setup.py install
将当前的Python应用安装到当前的Python环境的"site-packages"目录下,方便其他程序导入
- 开发方式安装
python setup.py develop