1. 简单介绍
将项目或工具打包成模块,使用pip进行安装和使用。
2. 打包工具
- distutils:分发(distribute)工具(utlis),Python 官方开发的一个分发打包工具。精髓在于编写 setup.py,它是模块分发与安装的指导文件。通过源码安装包时会用到:
python setup.py install
- setuptools:distutils的增强版,常用该版本。
3. 如何打包
- 打包的关键在于如何编写 setup.py 文件。简单常用如下:
from setuptools import setup, find_packages from codecs import open from os import path # 包的版本 __version__ = '0.0.4' # 该项目依赖的包 base_path = path.abspath(path.dirname(__file__)) with open(path.join(base_path, 'requirements.txt'), encoding='utf-8') as f: all_reqs = f.read().split('\n') install_requires = [one.strip() for one in all_reqs] dependency_links = ["http://xxxxxxx.com/xxxxx-1.0.tar.gz"] setup( name='包名字', version=__version__, description='描述信息', url='项目主页', download_url='包下载链接', license='MIT', author_email='邮箱地址', author='作者名字', packages=find_packages(), # 找到当前目录下有哪些包。 include_package_data=True, # 在MANIFEST.in文件指定的包目录中自动包含找到的所有数据文件。 install_requires=install_requires, # 当前模块依赖哪些包,安装模块时会自动安装依赖包。 setup_requires=['numpy>=1.10', 'scipy>=0.17'], # 运行setup.py本身要依赖的包 dependency_links=dependency_links, # 用于安装setup_requires的软件包,指定依赖包的下载地址 )
- 发布方式:
- 以源码包的方式发布:先解压,再编译,最后安装。所以它是跨平台的,但每次安装都要进行编译,安装速度较慢。常见格式:zip、tar、gztar等。
python setup.py sdist # 输出到 dist/xxxxx.tar.gz
- 以二进制包形式发布:省去了编译的过程,安装速度更快。但不同平台的编译出来的包无法通用,不支持夸平台使用。常见格式:egg、wheel等。
python setup.py bdist_wininst # 输出到 dist/xxxxx.exe python setup.py bdist_egg # 输出到 dist/xxxxx.egg python setup.py bdist_wheel # 输出到 dist/xxxxx.whl
- 以源码包的方式发布:先解压,再编译,最后安装。所以它是跨平台的,但每次安装都要进行编译,安装速度较慢。常见格式:zip、tar、gztar等。