前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python项目标准结构,我推荐这个!

Python项目标准结构,我推荐这个!

作者头像
double
发布2022-03-14 13:11:03
3.6K0
发布2022-03-14 13:11:03
举报
文章被收录于专栏:算法channel

你好,我是zhenguo

这是我的第503篇原创

这篇文章讲什么?

做数据分析习惯使用Jupyter notebook,编写几行代码,很方便得到结果。

但在真正项目中,一般使用PyCharm或VSCode开发。那有的小伙伴就问了,项目文件目录有没有一个标准的结构?

应该没有唯一的统一标准,但Python社区大佬Kenneth Reitz在2013年提出一个Python项目目录结构,推荐你日后项目中参考。

Python项目推荐结构

Kenneth推荐目录结构,如下所示:

代码语言:javascript
复制
samplemod-master
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.rst
├── docs
│   ├── Makefile
│   ├── conf.py
│   ├── index.rst
│   └── make.bat
├── requirements.txt
├── sample
│   ├── __init__.py
│   ├── core.py
│   └── helpers.py
├── setup.py
└── tests
    ├── __init__.py
    ├── context.py
    ├── test_advanced.py
    └── test_basic.py

一共3个文件夹,17个文件。

先来看看第一个文件夹docs,它是项目相关文档,包括依赖包安装的Makefilemake.bat,项目配置conf.py,项目介绍文档index.rst,是比README.rst更细化的一个文档,README.rst更像一个项目总览。

第二个文件夹sample,在Python中一般叫做包(package),它是项目核心代码,一般会有多个这种包,__init__.py是Python包包括的文件。core.pyhelpers.pysample包里两个核心模块。

第三个包tests,是对应于sample包的单元测试包,里面的模块名称一般以test开头,测试sample里的每个模块。

setup.py是做什么的?

有了上面三个最主要的包外,文件最重要的有setup.py,这个文件是做什么的?

简单来说,setup.py是和打包相关的配置模块,一般结合setuptools

有了setup.py,我们就可以安装包到本地全局环境,或者上传到PyPi,这样全世界开发者都有机会搜索到你的包,并使用pip安装上你的包。

里面代码相对比较标准和固定,比如在这个项目里代码如下:

代码语言:javascript
复制
from setuptools import setup, find_packages


with open('README.rst') as f:
    readme = f.read()

with open('LICENSE') as f:
    license = f.read()

setup(
    name='sample',
    version='0.1.0',
    description='Sample package for Python-Guide.org',
    long_description=readme,
    author='Kenneth Reitz',
    author_email='me@kennethreitz.com',
    url='https://github.com/kennethreitz/samplemod',
    license=license,
    packages=find_packages(exclude=('tests', 'docs'))
)

看到这里面用到README.rstLICENSE文件,并且指定打哪些包分发出去。


这篇文章梳理了Python项目的标准结构,希望对你有用,点赞或收藏吧,enjoy!

我的课程宣传

我正在录制一个从零学Python的体系课,目前已有120节视频课,正在进行的有爬虫、数据分析、算法等,整个录制完成应该有300节视频课。

预售阶段我决定只299元。相当于花一门课的钱,学到了很多门课。

这个课有专属班级群,我会在里面答疑每一个提问。

长按图中圆圈二维码

zhenguo出品,品质保证!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 这篇文章讲什么?
  • Python项目推荐结构
  • setup.py是做什么的?
  • 我的课程宣传
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档