?
setuptools是python標準的打包分發工具,它可以將我們編寫的python項目打包安裝,這樣其他同事就可以像調用標準庫或python第三方庫那樣直接使用;也可以將項目上傳到Pypi供更多人的下載安裝使用。
?
1. 項目結構

項目結構
?
這是一個打包構建好的一個目錄結構。構建前的結構包含:demo、docs、setup.py ,其中主要的就是demo文件夾和setup.py。
?
2.setup文件說明
?
setup.py定義了打包程序的一些相關信息
?
import os, shutilfrom setuptools import setup, find_packages#移除構建的build文件夾CUR_PATH = os.path.dirname(os.path.abspath(__file__))path = os.path.join(CUR_PATH, 'build')if os.path.isdir(path): print('INFO del dir ', path) shutil.rmtree(path)setup( name = 'demo', #應用名 author = 'selfeasy', version = '0.1', #版本號 packages = find_packages(), #包括在安裝包內的Python包 include_package_data = True, #啟用清單文件MANIFEST.in,包含數據文件 exclude_package_data = {'docs':['1.txt']}, #排除文件 install_requires = [#自動安裝依賴 'Flask>=0.10', ],)
3. 打包分發流程
3.1 打包
python setup.py bdist_egg
?
該命令會在當前目錄下的”dist”目錄內創建一個”egg”文件,名為”MyApp-1.0-py2.7.egg”。文件名格式就是”應用名-版本號-Python版本.egg”,我本地Python版本是2.7。同時你會注意到,當前目錄多了”build”和”MyApp.egg-info”子目錄來存放打包的中間結果。
?
3.2 安裝
python setup.py install
?
該命令會將當前的Python應用安裝到當前Python環境的”site-packages”目錄下, 這樣其他程序就可以像導入標準庫一樣導入該應用的代碼了。
?
4.打包方式
?
打包構建和安裝方式有多種,可以選擇適合自己的。
?
python setup.py --help#查看setup文件的配置信息可以包含哪些
python setup.py --help-commands# 查看程序打包和分發可以使用的命令有哪些