setuptools打包django:python3.4

1. 背景

在安装python的相关模块或者库时,我们一般会采用以下几种方式进行安装:
1. pip:这种方式会下载包并安装相关的依赖。
2. setup:需要手动下载源码并安装,然后手动安装相关依赖。

当我们发布的项目,使用到了python的redis、mysql模块等,和自己开发的模块。这个时候可以使用setuptools将python的模块以及相关依赖、自己开发的模块同时进行打包,使用时通过setup安装,自己开发的包就会安装在python的site-package下,在python代码中import该包后,就可以直接使用。

2. 参数

--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() 它默认在和setup.py同一目录下搜索各个含有 __init__.py的包。
--install_requires = ["requests"] 需要安装的依赖包
--entry_points 动态发现服务和插件

我在使用时并未使用以上全部参数。

3. 安装

sudo apt-get install python-setuptools

4. 使用

在项目的根目录下创建setup.py文件,并进行配置

from setuptools import setup, find_packages

setup(
name="myapp",
version="1.0.0-RC01-SNAPSHOT",
author="aut",
author_email="aut@**.com",
description="myapp sdk",
platforms='linux',
# 找到所有包含__init__的包
packages=find_packages(),
# 静态文件等,配合MANIFEST.in (package_data 参数不太好使)
include_package_data=True,
# 单独的一些py脚本,不是在某些模块中
scripts=["manage.py"],
install_requires=['django==1.8.18'],
# 此项需要,否则卸载时报windows error
zip_safe=False
)

include_package_data设置为True表明使用MANIFEST来打包静态资源,以下是MANIFEST的内容:

在项目根目录下创建MANIFEST.in,并进行配置

recursive-include script *
recursive-include stats *

配置完文件后使用setup命令进行打包:

python setup.py sdist --formats=gztar,zip

以上命令会在根目录的dist目录下生成两个包,一个tar.gz,一个zip。

参考文献

  1. https://docs.python.org/3.5/distutils/sourcedist.html
  2. https://www.cnblogs.com/maociping/p/6633948.html
  3. https://blog.csdn.net/orangleliu/article/details/46604237

猜你喜欢

转载自blog.csdn.net/lj1404536198/article/details/80339362