python 项目工程化开发
虚拟环境工具
安装poetry
1 | pip install -U peotry |
上述方式不行时
1 | (Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python |

加入环境变量
初始化项目
安装cookiecutter
1 | pip install -U cookiecutter |
初始化项目
1 | cd workspace |
1 | D:\project\py_pro_guide>cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project |
会生成如下的工程目录
1 | D:\project\py_pro_guide>tree /f |
初始化项目环境
使用 poetry 初始化一个虚拟环境
1 | D:\project\py_pro_guide>cd time_count |
一些工具
在生成的 pyproject.toml 文件中,默认添加了一些开发环境中常用的工具。
isort: isort 是一个自动格式化导入工具pylint: pylint 是一个检测代码风格工具pytest: pytest 是一个更加易用的测试框架,兼容unittest测试框架pytest-cov: pytest-cov 是pytest的 Coverage 插件,用来统计测试覆盖率mkdocs: mkdocs 是一个项目文档构建工具,使用 markdown 编写内容,构建生成文档页面。mkdocs-material: mkdocs-material 是基于 mkdocs 构建文档,并提供现代化主题的库。tox: tox 是一个任务自动化工具
项目开发
先将项目安装到python环境中
1 | D:\project\py_pro_guide\time_count>poetry install |
编写代码
1 | isort . # 在项目根目录运行 isort对导入进行格式化 |
测试
1 | poetry add --group dev pytest-mock |
如果感觉每次运行多个命令比较繁琐,可以在项目根目录中运行 tox 自动化完成代码测试、导包检查和代码风格检查。
1 | tox |
打包发布
如果希望别人能更方便的使用项目,可以将项目打包发布到 pypi 中,然后在需要使用的地方运行
1 | pip install -U word-count |
但是安装到环境后去运行 cmdline.py 会比较麻烦,所以需要将 cmdline.py 注册成可执行命令。
修改 pyproject.toml ,增加如下内容:
[tool.poetry.plugins.console_scripts]
time_count = “time_count.cmdline:main”`
当使用 pip 命令将项目包安装到环境后,会自动注册一个 time_count 的可执行命令。
再次将本地项目以可编辑方式安装到当前 Python 环境:
poetry install`
然后就可以正常使用 time_count` 命令:
1 | $ time_count -h |
运行打包命令:
poetry build`
sdist 会将项目打包成源码包, bdist_wheel 会将项目打包成编译后的二进制包。
打包后的文件在 dist 目录中。可以直接在其他地方运行 pip install word_count.wheel 安装。
发布
将开发好的项目发布到索引仓库,或内网的私有仓库。
poetry publish`
默认会将项目发布到 pypi 中,所以需要有对应的登录账号。