Skip to content

pyloong/cookiecutter-pythonic-project-bigdata-etl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

aaa56b4 · May 17, 2023

History

10 Commits
Sep 26, 2022
Sep 26, 2022
Sep 30, 2022
Sep 26, 2022
May 16, 2023
Sep 26, 2022
Sep 26, 2022
May 16, 2023
Sep 26, 2022
Sep 26, 2022
Sep 26, 2022
Sep 26, 2022
Sep 26, 2022

Repository files navigation

cookiecutter-pythonic-project-bigdata-etl

GitHub Workflow Status (branch) GitHub Last commit License support python version

一个使用 Cookiecutter 工具生成 Python 工程化ETL开发项目的模板。

特性

  • 跨平台支持使用
  • 支持自定义配置选项
  • 默认使用 SRC 项目结构
  • 初始化 PEP517 规范打包配置,默认使用 poetry 打包。
  • 可选初始化通用项目骨架

注意: 项目支持 Python >= 3.9 , 并且已经启用 Python 3.10 相关功能和稳定性测试。

直接使用

# 升级最新 pip
pip install -U pip

# 安装或升级 cookiecutter
pip install -U cookiecutter

# 使用 cookiecutter 加载项目模板,生成项目
# 回车运行的时候,需要根据提示交互选择启用的功能。
# 如果使用默认配置,则一路回车就可以。
cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project-bigdata-etl

详细说明

创建项目

❯ cookiecutter https://github.com/pyloong/cookiecutter-pythonic-project-bigdata-etl
project_name [My Project]: 
project_slug [my_project]: 
project_description [My Awesome Project!]: 
author_name [Author]: 
author_email [author@example.com]: 
version [0.1.0]: 
Select python_version:
1 - 3.10
2 - 3.9
Choose from 1, 2 [1]: 
use_src_layout [y]: 
use_poetry [y]: 
use_docker [n]: 
Select ci_tools:
1 - none
2 - Gitlab
3 - Github
Choose from 1, 2, 3 [1]: 
Select use_framework:
1 - none
2 - pyspark
Choose from 1, 2 [1]: 2

上述操作,全部使用了默认逻辑:

  • 使用默认项目名: My Project
  • 默认的项目目录和包名: my_project
  • 默认的项目描述: My Awesome Project!
  • 默认的用户: author
  • 默认的邮箱: author@example.com
  • 默认的版本号: 0.1.0
  • 默认的 Python 版本: python 3.10
  • 默认的项目结构: SRC 结构
  • 默认不使用 Docker 环境
  • 默认不使用 CI 环境
  • 默认不使用 pyspark等依赖

执行结束后,会在操作命令当前位置生成一个 my_project 目录,目录内容如下:

my_project
├─src
│  │  __init__.py
│  │
│  └─pyspark_etl_template
│     │  cmdline.py
│     │  executor.py
│     │  constants.py
│     │  __init__.py
│     │
│     ├─configs
│     │  │  dev.toml
│     │  │  global.toml
│     │  │  prod.toml
│     │  └─ test.toml
│     │
│     ├─dependecies
│     │  │  log.py
│     │  │  config.py
│     │  │  spark.py
│     │  └─ __init__.py
│     │
│     ├─tasks
│     │  │  __init__.py
│     │  │
│     │  └─abstract
│     │     │  task.py
│     │     │  transform.py
│     │     └─ __init__.py
│     │
│     └─utils
│        │  exception.py
│        └─ __init__.py
|
└─tests
    │  conftest.py
    │  test_version.py
    └─ __init__.py

目录中包含了一个完整项目所需要的内容。有项目打包用到的描述文件,记录项目依赖文件和一个简单的测试用例。

项目使用 SRC 目录结构,项目模块在 SRC 下。强烈建议开发前测试你的代码,可以避免因项目生成项目模板导致后期开发异常。

使用项目

进入项目目录:

## 进入到项目中
cd my_project

## 初始化项目环境
## 如果使用了 poetry 则执行 poetry install -v 
poetry install -v

## 如果不使用 poetry 则执行 pip install -r requirements.txt
## 强烈建议使用 virtualenv 虚拟环境管理项目环境
## 安装 virtualenv 虚拟环境管理工具
# pip install virtualenv
## 使用 virtualenv 创建虚拟环境
# virtualenv .venv
## 进入虚拟环境中
# source .venv/bin/activate
## 安装项目必要依赖
# pip install -r requirements.txt
## 后续安装依赖直接使用 pip install aiohttp 即可
## 可以使用 pip freeze 生成当前依赖版本,并更新依赖
# pip freeze > requirements.txt

## 进入虚拟环境
poetry shell

## 自动化测试项目
tox

## 安装项目开发时需要的依赖。安装完成后,会自动更新 poetry.lock 文件,锁定当前版本。
poetry add aiohttp

更多使用细节请查看 使用说明

开发与协作

  • fork
  • code
  • test
  • pr

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published