1. 新建一个需要打包的目录:
- 案例目录名:package_test, 后面提到这个目录就用 package_test 代替;
2. 把需要封装的包文件夹复制到 package_test 下:
- 案例需要封装的包文件夹为:demo, 案例需要封装的包文件为:py_modiles.py,后面提到这个包文件夹就用 demo 代替;
3. 确认 demo 中有 init.py 文件;
- 同理, 如果demo还有子包(子目录),那么它的子包也必须有 init.py 文件;
- 注意:init.py 文件中的类或方法 在开发中使用时 import导入demo后能用dir方法看到;
4. 在 package_test 目录下 新建 setup.py 文件,这里重要是打包时的一些设置:
from setuptools import setup, find_packages
name = 'demo'
with open('requirements.txt', 'r') as f:
# requirements.txt 可用 pipreqs ./ 命令生成
requirements = [i for i in f.readlines() if i.strip()]
with open('README.md', 'r') as f:
reade_me = f.read()
setup(
# 程序的官网地址, 我们可以写gitlab的项目地址
url='https://github.com',
# 打包起来的包的文件名
name=name,
# 版本号,添加为打包文件的后缀名
version='1.0.0',
# 作者: iyourcar
author='',
# 作者的邮箱:
author_email='',
# 对项目简短的一个形
description='just for test',
# 包的详细描述, 相当于readme
long_description=reade_me,
# 要打包的源文件的目录名, 一般用find_packages()
packages=find_packages(),
# 需要安装的依赖包
install_requires=requirements,
# packages参数包含有的包之外的,需要打包的python文件列表;注意:packages, py_modules两个参数配置至少一个
py_modules=['py_modules'],
# console_scripts 指明了命令行工具的名称;可在命令行直接使用的命令,等号前面指明了工具包的名称,等号后面的内容指明了程序的入口地址; 这里可以有多条记录,这样一个项目就可以制作多个命令行工具了
# 如:demo_sql是命令,执行方法:cmd_test
entry_points={
'console_scripts': [
# 相当于pycase == pycase/case.py.cmd_test
'demo_sql = demo.util_mysql:cmd_test'
]
},
# 参数决定包是否作为一个 zip 压缩后的 egg 文件安装(True),还是作为一个以 .egg 结尾的目录安装(False), 有些环境不支持zip安装,可设置为False
zip_safe=False
)
5. 配置 MANIFEST.in 文件: 需要一起打包的非py文件
include *.md
include requirements.txt
# Include the data files, 如果有图片或其它文件等,可以把下一行的注释去掉
# recursive-include data *
6. 准备目录结果:
更多详情可参考: http://blog.konghy.cn/2018/04/29/setup-dot-py/