python setup.py打包详解

简介

在安装python的相关模块和库时,我们一般使用“pip install 模块名”或者“python setup.py install”,前者是在线安装,会安装该包的相关依赖包;后者是下载源码包然后在本地安装,不会安装该包的相关依赖包。

编写第三方插件,首要是编写 setup.py 文件,有兴趣的可以看下之前下载的一些第三库的源代码文件,目录下面一般都会有setup.py, 在本地可以 python setup.py install 直接安装。setup.py 文件其实就是打包配置文件.描述了一些相关信息,比如是谁发布的,依赖包有哪些,主函数入口描述等配置信息,当然也可以自定义一些 Command 命令.

setup.py参数介绍

name : 打包起来的包的文件名
version : 版本号,添加为打包文件的后缀名
author : 作者
author_email : 作者的邮箱
py_modules : 罗列所有要打包的源文件
packages : 要打包的源文件的目录名
include_package_data : 项目里会有一些非py文件,比如html和js等,这时候就要靠 include_package_data 和 package_data 来指定了。
package_data:一般写成 {'your_package_name': ["files"]}, include_package_data还没完, 还需要修改MANIFEST.in文件.MANIFEST.in文件的语法为: include xxx/xxx/xxx/*.ini  */(所有以.ini结尾的文件,也可以直接指定文件名)
license : 支持的开源协议
description : 对项目简短的一个形容
ext_modules : 是一个包含Extension实例的列表,Extension的定义也有一些参数。
ext_package : 定义extension的相对路径
requires : 定义依赖哪些模块
provides : 定义可以为哪些模块提供依赖
data_files : 指定其他的一些文件(如配置文件),规定了哪些文件被安装到哪些目录中。如果目录名是相对路径,则是相对于sys.prefix或sys.exec_prefix的路径。如果没有提供模板,会被添加到MANIFEST文件中。

简单示例

setup.py

from distutils.core import setup
setup(name="ccy", 
  version="1.0", 
  description="ccy's module",
  package_dir={'':'c1'},
  packages=["c11","c12","c11.c111"],
  author="ccy")

编译成exe,可以选择安装目录

python3 setup.py sdist
  • sdist 指的是source dist 即源码发布,带setup.py
  • bdist 指的是built (binary) dist 即编译过(二进制)发布 不带setup.py

调用

from` `c11.f11 ``import` `my11
my11.showmyself()

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×