diff --git a/source/c12/c12_02.md b/source/c12/c12_02.md
index b0a21c674fa295b6c030a96fb62920cf590fdcc5..174cf4c96370b05b3d4890a0855ed23314d14004 100644
--- a/source/c12/c12_02.md
+++ b/source/c12/c12_02.md
@@ -1,4 +1,4 @@
-# 12.2 【虚拟环境】方案一:virtualenv
+# 12.2 【虚拟环境】方案一:使用 virtualenv
## 1. 安装virtualenv
diff --git a/source/c12/c12_02.rst b/source/c12/c12_02.rst
index 18463d84380eabb9a53251b30e040556e14f79de..0d543f915b9fb2fd7fe8105a026afa3d54aa7d88 100644
--- a/source/c12/c12_02.rst
+++ b/source/c12/c12_02.rst
@@ -1,5 +1,5 @@
-12.2 【虚拟环境】方案一:virtualenv
-===================================
+12.2 【虚拟环境】方案一:使用 virtualenv
+========================================
1. 安装virtualenv
-----------------
diff --git a/source/c12/c12_03.md b/source/c12/c12_03.md
index 52d76cc962f25b3d1f336ad5636a00f42dbc3aad..40a7f05a707b17ef7c39580a8178fb61d99bd789 100644
--- a/source/c12/c12_03.md
+++ b/source/c12/c12_03.md
@@ -1,6 +1,4 @@
-# 12.3 【虚拟环境】方案二:pipenv
-
-![](http://image.iswbm.com/20200602135014.png)
+# 12.3 【虚拟环境】方案二:使用 pipenv
以前一直使用pip+virtualenv+virtualwrapper管理模块和环境, 但是virtualwrapper在windows上使用不太方便,而且包和环境分开管理确实经常不记得哪个是哪个了。
diff --git a/source/c12/c12_03.rst b/source/c12/c12_03.rst
index d25ad06ab926db902c530ac5d422e1e7a4e0b4c5..2e06408a824167a70c9bf49d212e8ef723308854 100644
--- a/source/c12/c12_03.rst
+++ b/source/c12/c12_03.rst
@@ -1,7 +1,5 @@
-12.3 【虚拟环境】方案二:pipenv
-===============================
-
-|image0|
+12.3 【虚拟环境】方案二:使用 pipenv
+====================================
以前一直使用pip+virtualenv+virtualwrapper管理模块和环境,
但是virtualwrapper在windows上使用不太方便,而且包和环境分开管理确实经常不记得哪个是哪个了。
@@ -28,11 +26,11 @@
如果你的电脑是 windows 的。
-|image1|
+|image0|
需要将如标示路径,加入到 环境变量 PATH 中。
-|image2|
+|image1|
然后需要重启一下,CMD 终端才能够刷新环境变量。
@@ -60,13 +58,13 @@ DjangoWebBlog 是我们的项目目录,进入这个目录下创建虚拟环境
这边以安装 python2 版本的虚拟环境为例说明。
-|image3|
+|image2|
如果你原项目使用的是 requirements.txt 这个管理包的方式,这时候执行
``pipenv --tow`` 创建一个虚拟环境后,会找到 requirements.txt
,并根据这里面的依赖包生成 Pipfile文件。
-|image4|
+|image3|
3. 查询虚拟环境
---------------
@@ -84,7 +82,7 @@ DjangoWebBlog 是我们的项目目录,进入这个目录下创建虚拟环境
演示如下:
-|image5|
+|image4|
4. 操作虚拟环境
---------------
@@ -104,7 +102,7 @@ DjangoWebBlog 是我们的项目目录,进入这个目录下创建虚拟环境
执行 ``pipenv shell``
就可以进入这个虚拟环境,在头部会有虚拟环境的标识名称。有这个标识,说明已经进入虚拟环境。
-|image6|
+|image5|
.. code:: python
@@ -158,20 +156,19 @@ DjangoWebBlog 是我们的项目目录,进入这个目录下创建虚拟环境
打印该虚拟环境下所有包的依赖关系图
-|image7|
+|image6|
有的python第三方包旧版本会有安全漏洞,使用 pipenv check
可以检查安全漏洞。
-|image8|
-
-.. |image0| image:: http://image.iswbm.com/20200602135014.png
-.. |image1| image:: http://image.iswbm.com/Fk6WZ2xbqg2DM3AvnYCpsiKQ4xOn
-.. |image2| image:: http://image.iswbm.com/FjuJ8yZsgjkzVuBRZHxK1ZnnzaEX
-.. |image3| image:: http://image.iswbm.com/20190612211330.png
-.. |image4| image:: http://image.iswbm.com/20190612213015.png
-.. |image5| image:: http://image.iswbm.com/20190612213950.png
-.. |image6| image:: http://image.iswbm.com/20190612211925.png
-.. |image7| image:: http://image.iswbm.com/20190614000336.png
-.. |image8| image:: http://image.iswbm.com/20190612215924.png
+|image7|
+
+.. |image0| image:: http://image.iswbm.com/Fk6WZ2xbqg2DM3AvnYCpsiKQ4xOn
+.. |image1| image:: http://image.iswbm.com/FjuJ8yZsgjkzVuBRZHxK1ZnnzaEX
+.. |image2| image:: http://image.iswbm.com/20190612211330.png
+.. |image3| image:: http://image.iswbm.com/20190612213015.png
+.. |image4| image:: http://image.iswbm.com/20190612213950.png
+.. |image5| image:: http://image.iswbm.com/20190612211925.png
+.. |image6| image:: http://image.iswbm.com/20190614000336.png
+.. |image7| image:: http://image.iswbm.com/20190612215924.png
diff --git a/source/c12/c12_04.md b/source/c12/c12_04.md
index f609c6f0b6da8d0e28fcb21083bf2bed6a05b2a7..0c67e7e83f694d418ba49eeed973571843892e4b 100644
--- a/source/c12/c12_04.md
+++ b/source/c12/c12_04.md
@@ -1,7 +1,5 @@
# 12.4 【虚拟环境】方案三:使用 pipx
-![](http://image.iswbm.com/20200602135014.png)
-
## 1. 什么是 pipx
pipx 是一款用于帮助你安装和运行那些用 python 编写的终端程序,它类似于 macOS 上的 brew,Ubuntu 上的 apt,CentOS 上的 yum。
diff --git a/source/c12/c12_04.rst b/source/c12/c12_04.rst
index 038cca15aa6d96097327dd6a69223aaba6f88c5e..b835a61c3c8efe6bb6d24fc2d977b9daafe3912e 100644
--- a/source/c12/c12_04.rst
+++ b/source/c12/c12_04.rst
@@ -1,8 +1,6 @@
12.4 【虚拟环境】方案三:使用 pipx
==================================
-|image0|
-
1. 什么是 pipx
--------------
@@ -45,7 +43,7 @@ pipx 的存在使这个流程变得更加舒畅,使用 pipx
在我安装好 pipx ,准备使用的时候,发现全局找不到 pipx 这个命令。
-|image1|
+|image0|
按照如上图所示,难道使用全路径执行命令?
@@ -62,7 +60,7 @@ pipx 的存在使这个流程变得更加舒畅,使用 pipx
软链接建好后,就可以直接使用 ``pipx`` 的命令啦。
-|image2|
+|image1|
刚刚我使用 pipx 安装了 youtube-dl 后,其实并没有将这个 youtube-dl
安装到系统全局的 Python 环境中。
@@ -71,7 +69,7 @@ pipx 的存在使这个流程变得更加舒畅,使用 pipx
现在来看一下,这个路径下面都有哪些东西?
-|image3|
+|image2|
从截图上可以看出
@@ -81,7 +79,7 @@ pipx 的存在使这个流程变得更加舒畅,使用 pipx
- 然后在 ``~/.local/bin`` 的目录下新建一个软链接,指向这个虚拟环境中
- 这样 ``youtube-dl`` 就变成全局的工具啦。
-|image4|
+|image3|
为了避免你新安装的 youtube-dl 与全局的冲突,你也可以指定 pipx
的命令来运行 youtube-dl
@@ -92,7 +90,7 @@ pipx 的存在使这个流程变得更加舒畅,使用 pipx
运行效果如下:
-|image5|
+|image4|
pip run 也可以直接执行在线的 python 脚本
@@ -202,7 +200,7 @@ pip run 也可以直接执行在线的 python 脚本
效果如下
-|image6|
+|image5|
8. 其他
-------
@@ -219,12 +217,12 @@ pip run 也可以直接执行在线的 python 脚本
我安装好后,可以使用 tab 键进行命令补全。
-|image7|
+|image6|
执行 ``pipx ensurepath`` 可以确保 ``~/.local/bin``
这个重要的目录,已经放入到 ``$PATH`` 的变量中。
-|image8|
+|image7|
9. pipx vs pip
--------------
@@ -244,13 +242,12 @@ pipx 只是解决 pip
- https://github.com/pipxproject/pipx
- https://pipxproject.github.io/pipx/comparisons/
-.. |image0| image:: http://image.iswbm.com/20200602135014.png
-.. |image1| image:: http://image.iswbm.com/image-20201130124107950.png
-.. |image2| image:: http://image.iswbm.com/image-20201130124554404.png
-.. |image3| image:: http://image.iswbm.com/image-20201130125257203.png
-.. |image4| image:: http://image.iswbm.com/image-20201130131138939.png
-.. |image5| image:: http://image.iswbm.com/image-20201130210539907.png
-.. |image6| image:: http://image.iswbm.com/image-20201130215320069.png
-.. |image7| image:: http://image.iswbm.com/image-20201130220233001.png
-.. |image8| image:: http://image.iswbm.com/image-20201130215826513.png
+.. |image0| image:: http://image.iswbm.com/image-20201130124107950.png
+.. |image1| image:: http://image.iswbm.com/image-20201130124554404.png
+.. |image2| image:: http://image.iswbm.com/image-20201130125257203.png
+.. |image3| image:: http://image.iswbm.com/image-20201130131138939.png
+.. |image4| image:: http://image.iswbm.com/image-20201130210539907.png
+.. |image5| image:: http://image.iswbm.com/image-20201130215320069.png
+.. |image6| image:: http://image.iswbm.com/image-20201130220233001.png
+.. |image7| image:: http://image.iswbm.com/image-20201130215826513.png
diff --git a/source/c12/c12_05.md b/source/c12/c12_05.md
index 5fad66a7d9c52598d7a71023ae6db3f4c89cf9d5..95a87bace87a4936d7fecbed88f062d2783420ce 100644
--- a/source/c12/c12_05.md
+++ b/source/c12/c12_05.md
@@ -167,6 +167,6 @@ url = "https://pypi.doubanio.com/simple/"
不过经过测试 Poetry 会使用 pip.ini 设置的 PyPI 镜像,而且豆瓣的源好像很久没更新了(创建虚拟环境安装的默认依赖里 importlib-metadata==0.20 找不到),[这篇文章](https://link.zhihu.com/?target=http%3A//greyli.com/set-custom-pypi-mirror-url-for-pip-pipenv-poetry-and-flit/)列出了一些其他国内的 PyPI 源。
-## 参考文章
+## 7. 参考文章
- [相比 Pipenv,Poetry 是一个更好的选择](https://zhuanlan.zhihu.com/p/81025311)
\ No newline at end of file
diff --git a/source/c12/c12_05.rst b/source/c12/c12_05.rst
index 0d2111885743dea8734129b1f5129c4bbe8c553c..8388f6b948102ae12129e5e562cee8710080e1fe 100644
--- a/source/c12/c12_05.rst
+++ b/source/c12/c12_05.rst
@@ -192,8 +192,8 @@ importlib-metadata==0.20
找不到),\ `这篇文章 `__\ 列出了一些其他国内的
PyPI 源。
-参考文章
---------
+7. 参考文章
+-----------
- `相比 Pipenv,Poetry
是一个更好的选择 `__
diff --git a/source/c13/c13_01.md b/source/c13/c13_01.md
index 7f1bb4ea4c4d392d24e33b8f632bb684e4e9e891..879ac81ecf310047aaec222517d1a188d98dc730 100644
--- a/source/c13/c13_01.md
+++ b/source/c13/c13_01.md
@@ -1,4 +1,4 @@
-# 13.1 使用 mypy 进行静态类型检查
+# 13.1 【静态检查】mypy 的使用
Python 3.6以后,允许为参数和函数返回类型添加类型标注(type hinting)。
diff --git a/source/c13/c13_01.rst b/source/c13/c13_01.rst
index 20f376c9aa95b05c1bc1637adab5581247d91a18..f8fddf666284ecb08bbfe5ae335ce72972235e75 100644
--- a/source/c13/c13_01.rst
+++ b/source/c13/c13_01.rst
@@ -1,5 +1,5 @@
-13.1 使用 mypy 进行静态类型检查
-===============================
+13.1 【静态检查】mypy 的使用
+============================
Python 3.6以后,允许为参数和函数返回类型添加类型标注(type hinting)。
diff --git a/source/c13/c13_02.md b/source/c13/c13_02.md
index 7ac2ec16bd510621a4fc52f95d9b0778ba34938a..82c6d6d1f4ac4881c38dc8fa1f78a9a587681a90 100644
--- a/source/c13/c13_02.md
+++ b/source/c13/c13_02.md
@@ -1,4 +1,4 @@
-# 13.3 用 pytest 进行代码测试
+# 13.2 【代码测试】pytest 的使用
> 转载自:http://kuanghy.github.io/2018/05/08/pytest
diff --git a/source/c13/c13_02.rst b/source/c13/c13_02.rst
index 4712997eec111d46dc8785f0426b8caab2a19324..ff85f53028aa2d46466f49c0e191309dec6b317a 100644
--- a/source/c13/c13_02.rst
+++ b/source/c13/c13_02.rst
@@ -1,5 +1,5 @@
-13.3 用 pytest 进行代码测试
-===========================
+13.2 【代码测试】pytest 的使用
+==============================
转载自:http://kuanghy.github.io/2018/05/08/pytest
diff --git a/source/c13/c13_03.md b/source/c13/c13_03.md
index 2bee3bd1c6fdc412b7514b06cd2a64198b5fd7f9..f9720c23d7c7a2dd1990137b78062c9dbf78b109 100644
--- a/source/c13/c13_03.md
+++ b/source/c13/c13_03.md
@@ -1,4 +1,4 @@
-# 13.4 使用 pre-commit hook 解决编码规范
+# 13.3 【代码提交】pre-commit hook
> 转载自:https://juejin.cn/post/6844903844103585805
diff --git a/source/c13/c13_03.rst b/source/c13/c13_03.rst
index 6b457c948aa7d901c69d264e920882a345ed2baf..dc6624fcbf527e94874d4eb790f4612c4863edc6 100644
--- a/source/c13/c13_03.rst
+++ b/source/c13/c13_03.rst
@@ -1,5 +1,5 @@
-13.4 使用 pre-commit hook 解决编码规范
-======================================
+13.3 【代码提交】pre-commit hook
+================================
转载自:https://juejin.cn/post/6844903844103585805
diff --git a/source/c13/c13_04.md b/source/c13/c13_04.md
index 289f8a42e7c98dc3ab9d73b4663a9eeae8dc614e..a2ddd125a1152eabecb5c6dd428aac601632ff15 100644
--- a/source/c13/c13_04.md
+++ b/source/c13/c13_04.md
@@ -1,4 +1,4 @@
-# 13.5 使用 cookiecutter 生成项目
+# 13.4 【项目生成】cookiecutter 的使用
> 转载自:https://note.qidong.name/2018/10/cookiecutter/
diff --git a/source/c13/c13_04.rst b/source/c13/c13_04.rst
index e08da23ec2820e9e55750a3a55213da0c36c285d..ab5c93273c5885c08a9916f885861745b8b5d7ee 100644
--- a/source/c13/c13_04.rst
+++ b/source/c13/c13_04.rst
@@ -1,5 +1,5 @@
-13.5 使用 cookiecutter 生成项目
-===============================
+13.4 【项目生成】cookiecutter 的使用
+====================================
转载自:https://note.qidong.name/2018/10/cookiecutter/
diff --git a/source/chapters/p13.rst b/source/chapters/p13.rst
index d18be9b36e6487435b6316915f1cbfe92676a5be..0224e9648530ecd56a496e258d9f74945ce8295d 100755
--- a/source/chapters/p13.rst
+++ b/source/chapters/p13.rst
@@ -1,5 +1,5 @@
=============================
-第十三章:工程项目
+第十三章:绝佳工具
=============================