python setup.py 语法格式
删除 setup.py 安装的软件包
1
2
3
4
5
6通过 setup.py 安装了一个软件包,删除的时候发现 setup.py 没有 uninstall 选项
此时,通过两个步骤可以轻松完成卸载:
步骤一: 增加"--record"参数,重新安装
python setup.py install --record install.txt
步骤二: 删除安装文件
cat install.txt|xargs rm -rfpython 模块的安装方式
1
2
3
4
5
6方式一: pip install {module}
方式二: 单文件,直接copy到 $PYTHON_DIR/lib 目录下
方式三: 多文件,且带有 setup.py, 运行 python setup.py install
方式四: egg文件,下载ez_setup.py,运行 python ez_setup; easy_install *.egg
注意: 如果是自己写的安装模块,推荐制作安装包,通过setup.py来安装setup.py 文件使用方式
1
2
3
4
5python setup.py build #编译
python setup.py install #安装
python setup.py sdist #制作分发包
python setup.py bdist_wininst #制作 windows 下的分发包
python setup.py bdist_rpm #制作 windows 下的分发包setup.py 文件语法格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67说明: setup.py 中主要执行一个 setup 函数,该函数中大部分是描述性东西,最主要的是 packages 参数,列出所有的 package,可以用自带的 find_packages 来动态获取 package
例如:
from setuptools import setup,find_packages # 加载"setup"和"find_packages"函数
setup( # 定义 setup 函数
name = "test", # 包名称
version = "1.0", # 包版本
platforms = "any", # 包适用的平台
keywords = ("test", "xxx"), # 程序关键字列表
description = "test sdk", # 程序简要说明
long_description = "test sdk for python", # 程序详细说明
license = "LGPL", # 程序授权信息
url = "http://test.com", # 程序官网地址
author = 'smallasa' # 程序编写者
author_email = 'samllasa@sina.com' # 程序编写者的邮箱
#maintainer = 'smallasa' # 程序维护者
#maintainer_email = 'smallasa@sina.com' # 程序维护者邮箱
packages = find_packages(), # 需要处理的包目录(包含__init__.py的文件夹)
include_package_data = True,
install_requires = [ # 需要安装的依赖包
'redis>=2.10.5',
'setuptools>=16.0',
],
scripts = [], #安装时需要执行的脚步列表
entry_points = { # 动态发现服务和插件
'console_scripts': [ # console_scripts 指明了命令行工具的名称
'test = test.help:main' # 在 'test = test.help:main' 等号前 指明了工具包名称;等号后 指明了程序入口地址
]
}
)
参数详解:
--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的包。
其实我们可以将包统一放在一个src目录中,另外,这个包内可能还有aaa.txt文件和data数据文件夹。另外,也可以排除一些特定的包
find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])
--install_requires = ["requests"] 需要安装的依赖包
--entry_points 动态发现服务和插件,下面详细讲