Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
DeepSpeech
提交
a25743c4
D
DeepSpeech
项目概览
PaddlePaddle
/
DeepSpeech
大约 2 年 前同步成功
通知
210
Star
8425
Fork
1598
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
245
列表
看板
标记
里程碑
合并请求
3
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
DeepSpeech
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
245
Issue
245
列表
看板
标记
里程碑
合并请求
3
合并请求
3
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
a25743c4
编写于
1月 13, 2022
作者:
J
Jackwaterveg
提交者:
GitHub
1月 13, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1339 from PaddlePaddle/Jackwaterveg-patch-1
[doc] fix release_python_package doc
上级
dae6bea5
7f516215
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
64 addition
and
50 deletion
+64
-50
docs/topic/package_release/python_package_release.md
docs/topic/package_release/python_package_release.md
+64
-50
未找到文件。
docs/topic/package_release/python_package_release.md
浏览文件 @
a25743c4
#
发包方法
#
简化安装与发包
## 问题:
1.
[
如何去除 ubuntu 的 apt 安装依赖?
](
#conda-代替系统依赖
)
2.
[
如何支持普通用户和开发者两种安装的需求,尽量减少普通用户所需的依赖?
](
#区分install模式和develop模式
)
3.
[
如何进行 python 包的动态安装?
](
#python-包的动态安装
)
4.
[
如何进行 python 项目编包?
](
#python-编包方法
)
5.
[
发包前要有什么准备?
](
#关于发包前的准备工作
)
6.
[
发 C++ 包需要注意的东西?
](
#manylinux
)
## conda 代替系统依赖
## conda 代替系统依赖
conda可以用来代替一些 apt-get 安装的系统依赖,这样可以让项目适用于除了 ubuntu 以外的系统。
conda
可以用来代替一些 apt-get 安装的系统依赖,这样可以让项目适用于除了 ubuntu 以外的系统。
使用 conda 可以安装 sox
, libsndfile,swig
等 paddlespeech 需要的依赖:
使用 conda 可以安装 sox
、 libsndfile、swig
等 paddlespeech 需要的依赖:
```
bash
```
bash
conda
install
-y
-c
conda-forge sox libsndfile
conda
install
-y
-c
conda-forge sox libsndfile
```
```
部分系统会缺少
libbzip2
库,这个 paddlespeech 也是需要的,这也可以用 conda 安装:
部分系统会缺少
libbzip2
库,这个 paddlespeech 也是需要的,这也可以用 conda 安装:
```
bash
```
bash
conda
install
-y
-c
bzip2
conda
install
-y
-c
bzip2
```
```
conda
也可以安装linux的C++
的依赖:
conda
也可以安装 linux 的 C++
的依赖:
```
bash
```
bash
conda
install
-y
-c
gcc_linux-64
=
8.4.0 gxx_linux-64
=
8.4.0
conda
install
-y
-c
gcc_linux-64
=
8.4.0 gxx_linux-64
=
8.4.0
```
```
#### 剩余问题:使用
conda环境编译kenlm失败。目前在conda环境下编译kenlm
会出现链接失败的问题
#### 剩余问题:使用
conda 环境编译 kenlm 失败。目前在 conda 环境下编译 kenlm
会出现链接失败的问题
目前知道需要的依赖:
目前知道需要的依赖:
...
@@ -32,7 +40,39 @@ conda install -y -c gcc_linux-64=8.4.0 gxx_linux-64=8.4.0
...
@@ -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
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 编包方法
## python 编包方法
...
@@ -48,7 +88,7 @@ pip install twine
...
@@ -48,7 +88,7 @@ pip install twine
#### python 编包
#### python 编包
编写好
python包的setup.py, 然后使用如下命令编wheel
包:
编写好
python 包的 setup.py, 然后使用如下命令编 wheel
包:
```
bash
```
bash
python setup.py bdist_wheel
python setup.py bdist_wheel
...
@@ -66,21 +106,33 @@ python setup.py sdist
...
@@ -66,21 +106,33 @@ python setup.py sdist
twine upload dist/wheel包
twine upload dist/wheel包
```
```
输入账号和密码后就可以上传
wheel
包了
输入账号和密码后就可以上传
wheel
包了
#### 关于python 包的发包信息
#### 关于python 包的发包信息
主要可以参考这个
[
文档
](
https://packaging.python.org/en/latest/guides/distributing-packages-using-setuptools/?highlight=find_packages
)
主要可以参考这个
[
文档
](
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
为了让有C++依赖的 pip wheel 包可以适用于更多的 linux 系统,需要降低其本身的 glibc 的依赖。这就需要让 pip wheel 包在 manylinux 的 docker 下编包。关于查看系统的 glibc 版本,可以使用命令:
`ldd --version`
。
## ManyLinux
为了让有 C++ 依赖的 pip wheel 包可以适用于更多的 linux 系统,需要降低其本身的 glibc 的依赖。这就需要让 pip wheel 包在 manylinux 的 docker 下编包。关于查看系统的 glibc 版本,可以使用命令:
`ldd --version`
。
### Manylinux
### Manylinux
关于
Many L
inux,主要可以参考 Github 项目的说明
[
github many linux
](
https://github.com/pypa/manylinux
)
。
关于
Manyl
inux,主要可以参考 Github 项目的说明
[
github many linux
](
https://github.com/pypa/manylinux
)
。
manylinux1 支持 Centos5以上, manylinux2010 支持 Centos 6 以上,manylinux2014 支持Centos 7 以上。
manylinux1 支持 Centos5以上, manylinux2010 支持 Centos 6 以上,manylinux2014 支持Centos 7 以上。
目前使用 manylinux2010 基本可以满足所有的 linux 生产环境需求。(不建议使用manylinux1,系统较老,难度较大)
目前使用 manylinux2010 基本可以满足所有的 linux 生产环境需求。(不建议使用manylinux1,系统较老,难度较大)
...
@@ -98,7 +150,7 @@ docker pull quay.io/pypa/manylinux1_x86_64
...
@@ -98,7 +150,7 @@ docker pull quay.io/pypa/manylinux1_x86_64
docker run
-it
xxxxxx
docker run
-it
xxxxxx
```
```
在
Many Linux 2010 的docker环境自带 swig 和各种类型的 python 版本。这里注意不要自己下载
conda 来安装环境来编译 pip 包,要用 docker 本身的环境来编包。
在
manylinux2010 的docker环境自带 swig 和各种类型的 python 版本。这里注意不要自己下载
conda 来安装环境来编译 pip 包,要用 docker 本身的环境来编包。
设置python:
设置python:
```
bash
```
bash
...
@@ -119,41 +171,3 @@ auditwheel show wheel包
...
@@ -119,41 +171,3 @@ auditwheel show wheel包
```
bash
```
bash
auditwheel repair wheel包
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
])
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录