Python打包
python setup.py打包
setup.py参数说明
#python setup.py build #编译
#python setup.py install #安装
#python setup.py sdist #生成压缩包(zip/tar.gz)
#python setup.py bdist_wininst #生成NT平台安装包(.exe)
#python setup.py bdist_rpm #生成rpm包
或者直接”bdist 包格式”,格式描述如下:
#python setup.py bdist --help-formats
--formats=rpm RPM distribution
--formats=gztar gzip'ed tar file
--formats=bztar bzip2'ed tar file
--formats=ztar compressed tar file
--formats=tar tar file
--formats=wininst Windows executable installer
--formats=zip ZIP file
例子:
1 #!/usr/bin/env python
2 # coding=utf-8
3
4 from setuptools import setup
5
6 '''
7 把redis服务打包成C:\Python27\Scripts下的exe文件
8 '''
9
10 setup(
11 name="RedisRun", #pypi中的名称,pip或者easy_install安装时使用的名称
12 version="1.0",
13 author="Andreas Schroeder",
14 author_email="andreas@drqueue.org",
15 description=("This is a service of redis subscripe"),
16 license="GPLv3",
17 keywords="redis subscripe",
18 url="https://ssl.xxx.org/redmine/projects/RedisRun",
19 packages=['DrQueue'], # 需要打包的目录列表
20
21 # 需要安装的依赖
22 install_requires=[
23 'redis>=2.10.5',
24 ],
25
26 # 添加这个选项,在windows下Python目录的scripts下生成exe文件
27 # 注意:模块与函数之间是冒号:
28 entry_points={'console_scripts': [
29 'redis_run = DrQueue.RedisRun.redis_run:main',
30 ]},
31
32 # long_description=read('README.md'),
33 classifiers=[ # 程序的所属分类列表
34 "Development Status :: 3 - Alpha",
35 "Topic :: Utilities",
36 "License :: OSI Approved :: GNU General Public License (GPL)",
37 ],
38 # 此项需要,否则卸载时报windows error
39 zip_safe=False
40 )
setup.py各参数介绍:
--name 包名称
--version (-V) 包版本
--author 程序的作者
--author_email 程序的作者的邮箱地址
--maintainer 维护者
--maintainer_email 维护者的邮箱地址
--url 程序的官网地址
--license 程序的授权信息
--description 程序的简单描述
--long_description 程序的详细描述
--platforms 程序适用的软件平台列表
--classifiers 程序的所属分类列表
--keywords 程序的关键字列表
--packages 需要处理的包目录(包含__init__.py的文件夹)
--py_modules 需要打包的python文件列表
--download_url 程序的下载地址
--cmdclass
--data_files 打包时需要打包的数据文件,如图片,配置文件等
--scripts 安装时需要执行的脚步列表
--package_dir 告诉setuptools哪些目录下的文件被映射到哪个源码包。
一个例子:package_dir = {'': 'lib'},表示“root package”中的模块都在lib 目录中。
--requires 定义依赖哪些模块
--provides定义可以为哪些模块提供依赖
--find_packages() 对于简单工程来说,手动增加packages参数很容易,
刚刚我们用到了这个函数,它默认在和setup.py同一目录下搜索各个含有 __init__.py的包。
也可以排除一些特定的包
find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
--install_requires = ["requests"] 需要安装的依赖包
--entry_points:
console_scripts 指明了命令行工具的名称;
在“redis_run = RedisRun.redis_run:main”中,
等号前面指明了工具包的名称,等号后面的内容指明了程序的入口地址。
entry_points={'console_scripts': [
'redis_run = RedisRun.redis_run:main',
]}
Py2exe制作WINDOWS安装包
- 制作setup.py,按照上面的步骤
- 运行命令:python setup.py py2exe
参考: