Merge pull request #1339 from PaddlePaddle/Jackwaterveg-patch-1

[doc] fix release_python_package doc
pull/1340/head
Jackwaterveg 3 years ago committed by GitHub
commit a25743c42c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,12 +1,20 @@
# 发包方法
# 简化安装与发包
## 问题:
1. [如何去除 ubuntu 的 apt 安装依赖?](#conda-代替系统依赖)
2. [如何支持普通用户和开发者两种安装的需求,尽量减少普通用户所需的依赖?](#区分install模式和develop模式)
3. [如何进行 python 包的动态安装?](#python-包的动态安装)
4. [如何进行 python 项目编包?](#python-编包方法)
5. [发包前要有什么准备?](#关于发包前的准备工作)
6. [发 C++ 包需要注意的东西?](#manylinux)
## conda 代替系统依赖
conda 可以用来代替一些 apt-get 安装的系统依赖,这样可以让项目适用于除了 ubuntu 以外的系统。
使用 conda 可以安装 sox, libsndfileswig等 paddlespeech 需要的依赖:
使用 conda 可以安装 sox、 libsndfile、swig 等 paddlespeech 需要的依赖:
```bash
conda install -y -c conda-forge sox libsndfile
@ -32,7 +40,39 @@ conda install -y -c gcc_linux-64=8.4.0 gxx_linux-64=8.4.0
conda install -c conda-forge eigen boost cmake
```
## 区分install模式和develop模式
可以在 setup.py 中划分 install 的依赖(基本依赖)和 develop 的依赖 (开发者额外依赖)。 setup_info 中 `install_requires` 设置 install 的依赖,而在 `extras_require` 中设置 `develop` key 为 develop 的依赖。
普通安装可以使用:
```bash
pip install .
```
另外使用 pip 安装已发的包也是使用普通安装的:
```
pip install paddlespeech
```
而开发者可以使用如下方式安装,这样不仅会安装 install 的依赖,也会安装 develop 的依赖, 即:最后安装的依赖 = install 依赖 + develop 依赖:
```bash
pip install -e .[develop]
```
## python 包的动态安装
可以使用 pip 包来实现动态安装:
```python
import pip
if int(pip.__version__.split('.')[0]) > 9:
from pip._internal import main
else:
from pip import main
main(['install', package_name])
```
## python 编包方法
@ -73,14 +113,26 @@ twine upload dist/wheel包
主要可以参考这个[文档](https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/?highlight=find_packages)
## 关于发包前的准备工作
#### 拉分支
在发包之前需要拉分支。例如需要发 0.1.0 版本的正式包,则需要拉一个 r0.1 的分支。并且在这个 r0.1 分支的包上面打 0.1.0 的tag。在拉分支之前可以选择性的使用 rc 版本发一个正式版前的试用包例如0.1.0rc0等到rc包测试通过后再拉分支如果是发 0.1.1 包,则 merge r0.1分支打tag完成发包。总体步骤可以总结为
## Manylinux 降低含有 C++ 依赖的 pip 包的 glibc 依赖
- 用 develop 分支发 rc 包
- rc 包通过后拉分支
- 打 tag
- 发包
- 编写 release note
## ManyLinux
为了让有 C++ 依赖的 pip wheel 包可以适用于更多的 linux 系统,需要降低其本身的 glibc 的依赖。这就需要让 pip wheel 包在 manylinux 的 docker 下编包。关于查看系统的 glibc 版本,可以使用命令:`ldd --version`。
### Manylinux
关于Many Linux主要可以参考 Github 项目的说明[ github many linux](https://github.com/pypa/manylinux)。
关于 Manylinux主要可以参考 Github 项目的说明[ github many linux](https://github.com/pypa/manylinux)。
manylinux1 支持 Centos5以上 manylinux2010 支持 Centos 6 以上manylinux2014 支持Centos 7 以上。
目前使用 manylinux2010 基本可以满足所有的 linux 生产环境需求。不建议使用manylinux1系统较老难度较大
@ -98,7 +150,7 @@ docker pull quay.io/pypa/manylinux1_x86_64
docker run -it xxxxxx
```
Many Linux 2010 的docker环境自带 swig 和各种类型的 python 版本。这里注意不要自己下载conda 来安装环境来编译 pip 包,要用 docker 本身的环境来编包。
manylinux2010 的docker环境自带 swig 和各种类型的 python 版本。这里注意不要自己下载 conda 来安装环境来编译 pip 包,要用 docker 本身的环境来编包。
设置python
```bash
@ -119,41 +171,3 @@ auditwheel show wheel包
```bash
auditwheel repair wheel包
```
## 区分 install 模式和 develop 模式
可以在setup.py 中划分 install 的依赖(基本依赖)和 develop 的依赖 (开发者额外依赖)。 setup_info 中 `install_requires` 设置 install 的依赖,而在 `extras_require` 中设置 `develop` key为 develop的依赖。
普通安装可以使用:
```bash
pip install .
```
另外使用 pip 安装已发的包也是使用普通安装的:
```
pip install paddlespeech
```
而开发者可以使用如下方式安装这样不仅会安装install的依赖也会安装develop的依赖 即:最后安装的依赖=install依赖 + develop依赖
```bash
pip install -e .[develop]
```
## python 包的动态安装
可以使用 pip包来实现动态安装
```python
import pip
if int(pip.__version__.split('.')[0]) > 9:
from pip._internal import main
else:
from pip import main
main(['install', package_name])
```

Loading…
Cancel
Save