过去一直使用pipenv(著名requests库作者的作品)对python工程进行版本管理。
在Rasa工程中,发现他们使用poetry对python工程进行管理。
使用后,发现确实比pipenv赞。
Poetry - Python dependency management and packaging made easy
为什么推荐使用poetry而不是pipenv?
- poetry除了具有依赖管理,还具有打包和发布的功能(不再需要twine)
- poetry在安装过程中,具有过程进展显示(而不是像pipenv长时间卡住都不知道)
poetry的简单使用
新项目
初始化
poetry init
(一步步交互式输入信息,注意,它问你是否定义依赖时,先选no,因为内网源还没有配置,生成poetry核心文件 pyproject.toml)
添加XX内网源
poetry source add xx http://mirrors.xxxx.com.cn:80/pypi/web/simple/ --priority default
( --priority default 这个很关键,否则即使加了xx的内网源,它仍然会使用默认的官方源下载,default的优先级是最高的)
进入poetry的虚拟环境
poetry shell
(第一次进入会自动创建虚拟环境,如果提示缺少虚拟环境相应组件,则需要额外安装)
新增依赖
poetry add xxxx
(第一次,会自动生成核心的poetry.lock文件,这是保证生产安装依赖和开发时的依赖版本完全一致的关键)
新增开发依赖(生产环境不需要使用的依赖)
poetry add yyyy --group dev
生产环境的依赖安装(如Docker内)
poetry install
(打包和发布到Pypi仓库)
poetry build
poetry publish -u __token__(这里是2个短下划线) -p pypi-AgEIcHlwaS5vcmcCJDc3NjRkNTdiLTQ0M2MtNDgzMi1hZjAyLTU0Nzc....(Pypi个人账号内的API TOKEN)