pip安装第三方库时,支持多种格式;基本要求是必须有setup.py文件。
假设工程的目录结构如下:
├── README.txt
├── pagtest
│ ├── __init__.py
│ ├── abc
│ │ ├── gzx
│ │ │ └── zjj.html
│ │ └── main1.go
│ ├── def
│ │ └── __init__.py
│ ├── main.go
│ ├── print1.py
│ └── print2.py
└── setup.py
其中pagtest是准备作为第三方库的代码文件,它包含很多非py文件;正常情况下,可能并不需要非py文件,而我们正在做的一款产品中几乎全是非py文件。
这里最重要的是setup.py文件,它与目标第三方库同级,这个位置要搞对,而README文件可有可无,不重要。
重点看setup.py文件,其中的内容如下:
from setuptools import setup,find_packages
setup(name='pagtest',
version='1.0.0',
description='尝试自定义python库',
author='winycg',
author_email='qq@qq.com',
url='https://www.python.org/',
license='MIT',
packages=find_packages(),
include_package_data = True,
install_requires=['requests==2.22.0'],
python_requires='>=3',
data_files=["pagtest/abc/gzx/zjj.html","pagtest/main.go"] # 正常打包时,只负责将py文件进行复制,这个参数用来指定哪些非py文件也会被导进去
)
setup.py其实很简单,就调用了一个setup函数而已;大部分参数都是通用的,随便百度一下都能找到,data_files这个比较特殊,它解决的就是非py文件的加入打包的问题;这个参数是个list,所有需要加入打包的文件的相对路径都要添加进来,这个路径是相对setup.py文件的,因此是从库文件那个位置作为入口。
一切准备就绪后,就可执行打包任务:
python setup.pu sdist
执行完毕后,会生成一个tar.gz文件:
它位于dist中,这个文件可以通过pip直接安装:
pip install pagtest-1.0.0.tar.gz
另外也可以生成whl文件,执行以下命令即可:
python3 setup.py bdist_wheel
whl文件似乎就是个压缩文件而已。