介绍
本文是我之前编写的使用pipenv,Git和Docker的Python开发流程的姐妹文章。既然Pipenv的开发不是很活跃,我认为在使用Python的项目中有时会使用Poetry。因此,我想使用诗歌重新组织开发流程。
总流量
前提条件
- Python 3.x
- 类Unix操作系统
安装开发环境
诗歌创作
在大多数情况下,您可以从操作系统随附的软件包管理器进行安装。
对于macOS
1 | $ brew install poetry |
拱Linux
1 | $ sudo pacman -S python-poetry |
Ubuntu 18.04
不幸的是,它没有在标准存储库中注册,因此请从官方安装程序进行安装。
1 2 | $ sudo apt install python3 python3-pip $ curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 |
安装完成后,将
?/ .bashrc
1 | export PATH=${HOME}/.poetry/bin:${PATH} |
其他工具介绍
将来我将使用Git和Docker / Docker Compose,因此请做好准备。
初始化Python项目
最后,我们将使用诗歌来初始化Python项目。
创建一个项目
首先,创建一个适当的目录并将其放入其中。
1 2 | $ mkdir sample-app $ cd sample-app |
接下来,您可以通过执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | $ poetry init This command will guide you through creating your pyproject.toml config. Package name [sample_app]: Version [0.1.0]: Description []: Sample App Author [Aruneko <[email protected]>, n to skip]: License []: MIT Compatible Python versions [^3.7]: Would you like to define your main dependencies interactively? (yes/no) [yes] no Would you like to define your development dependencies interactively? (yes/no) [yes] no Generated file [tool.poetry] name = "sample_app" version = "0.1.0" description = "Sample App" authors = ["Aruneko <[email protected]>"] license = "MIT" [tool.poetry.dependencies] python = "^3.7" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry>=0.12"] build-backend = "poetry.masonry.api" Do you confirm generation? (yes/no) [yes] |
退出交互式环境时,
1 2 | $ ls pyproject.toml |
诗歌初始设置
通常,如果添加了以下设置,则在
1 | $ poetry config virtualenvs.in-project true --local |
请注意,此设置在
添加包装
在
诗歌环境下,使用
1 | $ poetry add fastapi uvicorn |
使用
诗歌安装软件包时,当时可以解析的从属软件包以及每个软件包的版本信息都将写入
仅在开发期间使用的软件包与
1 | $ poetry add -D black |
到目前为止,通过执行命令,您可以看到到目前为止安装的软件包已添加到
pyproject.toml
1 2 3 4 5 6 7 | [tool.poetry.dependencies] python = "^3.7" fastapi = "^0.52.0" uvicorn = "^0.11.3" [tool.poetry.dev-dependencies] black = "^19.10b0" |
从现在开始,请根据需要每次安装软件包。
Git初始化
接下来,初始化Git以使用Git管理该项目。首先使用gitignore.io创建一个
一旦拥有
1 2 3 4 | $ curl -o .gitignore https://www.gitignore.io/api/python,virtualenv $ git init $ git add pyproject.toml poetry.lock poetry.toml .gitignore $ git commit -m "Initial Commit" |
如何进入虚拟环境
使用
诗歌创建的Python虚拟环境。如果您忘记进入虚拟环境,则会出现各种问题,例如无法看到您应该安装的软件包,因此请务必仔细检查。要退出,请使用
1 2 | $ poetry shell (.venv)$ exit |
码头工人
在
中,当我们完成创建Poetry项目时,我们将最终进行Docker转换。
正在准备.dockerignore
对于不需要传输的文件,输入
.dockerignore
1 2 | .venv/ __pycache__/ |
Dockerfile准备
最后,我将编写一个Dockerfile。这次,我将介绍使用多阶段构建的方法。该过程分为上半部分创建
首先需要这样做的原因是,您需要安装Poetry来读取
首先,从上半年的解释开始。为了充分利用Docker的缓存策略,我首先安装了Poetry。这样可以省去在每个版本上安装Poetry的麻烦。然后,它仅复制
接下来是后半部分的说明。从上半年复制生成的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | FROM python:3.8-slim as builder WORKDIR /usr/src/app RUN pip install poetry COPY pyproject.toml poetry.lock ./ RUN poetry export -f requirements.txt > requirements.txt FROM python:3.8-slim ENV PYTHONUNBUFFERED=1 WORKDIR /usr/src/app COPY --from=builder /usr/src/app/requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD [ "uvicorn", "main:app", "--host", "0.0.0.0" ] |
设置Docker Compose也是一个好主意。挂载本地文件进行开发,然后设置自动重新加载设置可能是一个好主意。
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 | version: '3' services: app: build: . volumes: - ./:/usr/src/app ports: - "8000:8000" command: ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0"] |
常问问题
如何更新软件包
可以使用
如何卸下包装
您可以使用
如果您从中间参与开发
您可以使用
结论
到目前为止,我们已经解释了使用Poetry的Python项目的开发流程。我认为Poetry也可以像Pipenv一样使用
另一方面,给人的印象是,它是针对Python包开发人员而不是Python应用程序的项目管理工具,例如缺少
作为
,诗歌和Pipenv都有优点和缺点。在这一点上,我认为选择适合您的项目的方法是安全的。希望大家都过得愉快。