python 项目框架管理

如何管理组织一个 python 项目是很重要且比较难的事情,而且并没有标准化。我最近看了一些资料并结合自己的工作经验,把我的项目框架管理记录下来,希望对大家有用,后续也会不断优化我的项目管理。

新建项目

image.png

注意事项:

  1. 项目名称遵循驼峰原则
  2. 解释器选择项目 venv
  3. 新版 pycharm 默认为. Venv 文件夹。更好一点。

安装及更新依赖

为了保证项目简洁,建议在本地项目下新建requirements. Txt 文件夹。一开始你可能根本不知道自己引用的包是什么版本, 没关系,先安装然后再运行更新代码会自动添加版本号。

1
2
3
4
5
6
7
8
9
10
streamlit
requests
pandas
numpy
matplotlib
seaborn
SQLAlchemy
PyMySQL
folium
geojson

使用命令进行安装

1
pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

使用下面的命令更新 requirements. Txt

1
pip freeze > requirements.txt

引用包

引用第三方包,直接用 import pandas as pd 这种格式就好了。
引用本地包,需要先组织好自己的包。Py 文件所在的文件夹添加__init__. Py 文件则可以让 python 识别为一个包。用 from ** import ** 就好了。

Python 项目结构

以 streamlit 可视化数据分析项目为例,总结我的项目框架。

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
├── my_streamlit_app/
│ ├── app.py # 主入口点,用于启动Streamlit应用
│ ├── pages/
│ │ ├── __init__.py
│ │ ├── page1.py # Streamlit页面1
│ │ └── page2.py # Streamlit页面2
│ ├── models/
│ │ ├── __init__.py
│ │ └── data_model.py # 数据模型、类
│ ├── services/
│ │ ├── __init__.py
│ │ └── data_service.py # 数据服务
│ ├── utils/
│ │ ├── __init__.py
│ │ └── helper_functions.py # 辅助函数、静态函数
│ ├── config/
│ │ ├── __init__.py
│ │ └── settings.py # 配置文件
│ └── tests/
│ ├── __init__.py
│ ├── test_pages.py
│ ├── test_models.py
│ └── test_services.py

├── .gitignore
├── README.md
├── requirements.txt # 项目依赖列表
└── setup.py # 构建脚本,用于打包和分发项目

这个结构展示了my_streamlit_app作为项目根目录,其中包含了app.py作为Streamlit应用的入口点,pages目录用于存放各个页面的脚本,modelsservicesutilsconfig目录分别用于存放数据模型、业务逻辑服务、通用工具函数和配置文件。tests目录用于单元测试和集成测试代码。
setup.py 位于项目根目录下,用于项目的构建、安装和分发,而 requirements.txt 文件列出了项目运行所需的Python包依赖。
注意:Streamlit 有一种简化的方式来管理多页面应用程序,称为“Multi-page Apps”。这种新特性允许你在 pages 目录下放置每个页面的 Python 文件,Streamlit 会自动检测并列出这些页面供用户选择。

当然,市面上也有很多中项目管理的方法,如领域驱动设计(Domain-Driven Design, DDD)和洋葱架构(The Onion Architecture),只要找到适合自己的项目结构就行了。

其他:自定义 venv 方法

有的 IDE,没有自动添加 venv ,需要手动增加,可以在命令行运行:
Unix/Linux shell

1
2
3
4
5
i[!-d".venv" ] ; then
python -m venv .venv
fi
echo
read -n1-s-r -p)"Press any key to continue

Windows PowerShell

1
2
3
4
5
6
7
8
9
if (-not (Test-Path -Path ".venv" -PathType Container)) {
python -m venv .venv
}

# 输出换行符
Write-Host ""

# 等待用户按键
Read-Host -Prompt "Press any key to continue"

激活 venv

1
.venv\scripts\activate.ps1

删除 venv

1
Remove-Item .\.venv -Recurse -Force

BY

纯个人经验,如有帮助,请收藏点赞,如需转载,请注明出处。
微信公众号:环境猫 er
CSDN : 细节处有神明
个人博客: https://maoyu92.github.io/


python 项目框架管理
https://maoyu92.github.io/2024/07/16/04 经验分享/python 项目框架管理/
作者
陈文茂
发布于
2024年7月16日
许可协议