四个工具帮你轻松将python项目发布到生产环境( 二 )


poetry run coverage run -m pytestpoetry run coverage reportpoetry run coverage html那不是很繁琐吗?使用Makefile,您可以将这三个命令分组在一个 test 目标下 。现在,您只需运行make test,而不是输入这三行,这避免了不必要的代码输入或记住复杂的指令 。

四个工具帮你轻松将python项目发布到生产环境

文章插图
Makefile还有助于简化其他任务,如:
  • 安装依赖项
  • 设置环境变量
  • 运行脚本
  • 构建和推送Docker镜像
  • 构建文档
  • 为代码添加样式
 
以下是我在我的一个开源项目中使用的Makefile示例:
DOCKER_IMAGE := ahmedbesbes/cowriterVERSION := $(shell git describe --always --dirty --long)ifneq (,$(wildcard ./.env))include .envexportendifrun-cowriter:@poetry run python -m src.mainrun-cowriter-job:@poetry run python -m src.jobrun-web-agent:@rm -rf db/ && poetry run python -m src.actions.web_searcher build-image: @docker build . -t $(DOCKER_IMAGE):$(VERSION)push-docker-image-to-artifact-registry: @gcloud builds submit --tag gcr.io/$(PROJECT_ID)/run_cowriter_joblint: @poetry run black .test:@poetry run coverage run -m pytest @poetry run coverage report @poetry run coverage htmlMakefiles通常易于阅读和理解,清晰地显示了项目的不同部分是如何组织的,以及它们如何相互依赖 。这对于新团队成员入职或一段时间后重访自己的项目尤其有帮助 。
 
4. python-dotenv 
作为开发人员,我使用Python构建依赖于凭据和敏感设置的应用程序 。以下是这些凭据的一些示例:
  • 用于访问第三方服务的API密钥
  • 密码和凭据
  • 标志
  • 域名或URL
?? 这些凭据不应该硬编码或版本化在您的脚本中 。一种安全的良好实践是将它们加载为环境变量 。
import osapi_key = os.environ.get("API_KEY")为了避免每次都使用shell命令导出环境变量,您可以使用Python dotenv包:
  • pip install python-dotenv
  • 创建一个包含键值对凭据的.env文件

四个工具帮你轻松将python项目发布到生产环境

文章插图
  • 将.env添加到.gitignore , 以防止Git提交它
  • 使用python-dotenv模块将设置加载到您的Python文件中

四个工具帮你轻松将python项目发布到生产环境

文章插图
 
结论 
我希望您发现这些工具有助于更好地构建Python项目的结构,并自动化繁琐和重复的任务 。




推荐阅读