python web开发开源规范

Hello , 大家好。首先在五一假期给所有劳动者创造者们送上祝福,

本文聊聊我对python web开源相关的规范

PEP 8

Python编程风格指南:PEP 8是Python编程的官方风格指南,提供了关于代码格式、命名规范、注释等方面的建议。遵循PEP 8可以使代码更易于阅读和维护

https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide

环境

开发python版本

python -V

虚拟环境:

安装虚拟环境工具:

bash 复制代码
pip install virtualenv

创建虚拟环境,导航到希望创建虚拟环境的目录

bash 复制代码
virtualenv myenv

在当前目录下创建一个名为"myenv"的虚拟环境

激活虚拟环境

bash 复制代码
myenv\Scripts\activate

激活虚拟环境后,命令提示符中的前缀应显示为虚拟环境的名称,例如"(myenv)"。

退出虚拟环境:

bash 复制代码
deactivate

依赖文件

requirements.txt文件是一个项目的依赖文件,可以通过下面的方式自动生成:

进入虚拟环境,切换到项目根目录下,使用pip工具的freeze参数。

bash 复制代码
pip freeze > ./requirements.txt

打开requirements.txt文件,其内容如下:

他人如果拷贝了我们的代码,要安装第三方库依赖的话,只需要:

bash 复制代码
pip install -r requirements.txt

就可以一次性安装好所有的库

.gitignore文件

在项目代码中,有一些文件是不能上传的,比如密码文件、数据库文件、核心配置文件等等,还有一些是不用上传的,比如临时文件。为了让git自动忽略这些文件,我们需要创建一个忽略名单。

在Git项目中,我们可以使用.gitignore文件来指定需要忽略的文件和目录,在项目根目录下新建一个.gitignore文件

以下是一个简单的.gitignore文件示例,用于忽略密码文件、数据库文件、核心配置文件和临时文件:

gitignore 复制代码
# 忽略密码文件
*.pem
*.key
*.crt

# 忽略数据库文件
*.db
*.sqlite

# 忽略核心配置文件
config.yml
config.json

# 忽略临时文件
*.tmp
*.bak

在这个示例中,我们使用通配符(*)来匹配特定类型的文件。例如,*.pem表示忽略所有扩展名为.pem的文件。我们还可以使用目录名来忽略整个目录,例如/logs表示忽略名为logs的目录及其所有内容。

在实际项目中,我们需要根据项目的具体需求来编写.gitignore文件。在添加、修改或删除.gitignore文件后,Git会自动更新忽略规则。如果需要忽略已经被跟踪的文件,可以使用git rm --cached <file>命令将其从Git跟踪列表中移除,但保留在本地文件系统中

特殊文件处理

对于settings.py文件这些,如果没有这个文件是无法运行Django项目的,但是settings中又可能包含很多关键的不可泄露的部分,比如SECRET_KEY等,

我的建议是在原文件或readme.md文件写入相关修改信息

说明文件(自述)

readme.md文件是项目的入口和门面,它有助于提高项目的可读性和可维护性。在实际项目中,我们需要根据项目的具体需求来编写README.md文件,以便让其他开发者更容易理解和使用项目。

# 项目名称

简短的项目描述。
功能列表:使用无序列表(-)来列出项目的主要功能。这有助于让读者了解项目的核心价值和用途。
## 功能

- 功能1:描述功能1的主要功能和用途。
- 功能2:描述功能2的主要功能和用途。
安装和配置:描述如何安装和配置项目,包括依赖库、环境变量等。这有助于让读者了解如何在本地环境中运行和测试项目。
## 安装

描述如何安装和配置项目,包括依赖库、环境变量等。
使用说明:描述如何使用项目,包括API调用、命令行参数等。这有助于让读者了解如何使用项目的各种功能。
## 使用

描述如何使用项目,包括API调用、命令行参数等。
示例:提供一些使用示例,以便读者更好地理解项目的用途和功能。这有助于让读者了解如何在实际项目中应用该项目。
## 示例

提供一些使用示例,以便用户更好地理解项目的用途和功能。
贡献指南:描述如何为项目贡献代码、报告问题和提交请求。这有助于让读者了解如何参与项目的开发和维护。
## 贡献

描述如何为项目贡献代码、报告问题和提交请求。
许可证信息:描述项目的许可证信息,如MIT、GPL等。这有助于让读者了解项目的版权和许可状况。
## 许可证

描述项目的许可证信息,如MIT、GPL等。

许可证

GitHub支持的开源许可证有很多,如ApacheMITGPL、BSD、CC0、EPL、AGPL

这些许可证可以分为两大类:宽松式许可证Copyleft许可证

宽松式许可证

宽松式许可证保证了使用、修改和重新分发的自由,同时也允许创建专有的派生作品,但要求他们保留你的版权声明和许可证。这类许可证中,最简洁明了和最受欢迎的是MIT许可证。

Copyleft许可证

Copyleft许可证则要求在使用开源组件时,必须向他人开放你的代码。GPL许可证族是这类许可证中最早出现也是最流行的一种,包含许多版本和变种.

Linux的开源许可证有Apache许可证,MIT许可证,GNU通用公共许可证(GPL)等,这些许可证共同构成了Linux开源生态系统的基础,确保了Linux代码的自由使用和共享,同时也保护了开发者和贡献者的权益。

比如拿MIT举例

Copyright 2024 liheng

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

相关推荐
ClkLog-开源埋点用户分析1 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos
丕羽3 小时前
【Pytorch】基本语法
人工智能·pytorch·python
bryant_meng3 小时前
【python】Distribution
开发语言·python·分布函数·常用分布
funnyZpC4 小时前
quartz集群增强版🎉
java·分布式·开源·集群·定时任务
m0_594526304 小时前
Python批量合并多个PDF
java·python·pdf
工业互联网专业5 小时前
Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
vue.js·hadoop·python·flask·毕业设计·源码·课程设计
钱钱钱端5 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
慕卿扬5 小时前
基于python的机器学习(二)—— 使用Scikit-learn库
笔记·python·学习·机器学习·scikit-learn
Json____5 小时前
python的安装环境Miniconda(Conda 命令管理依赖配置)
开发语言·python·conda·miniconda
小袁在上班5 小时前
Python 单元测试中的 Mocking 与 Stubbing:提高测试效率的关键技术
python·单元测试·log4j