Python代码组织

Python 代码组织

清空你的杯子,方能再行注满,空无以求全.(李小龙)

准备

为方便管理, 最好不将Python的包放在同一个地方.此时可创建
虚拟环境隔离其它包.

# 创建虚拟环境
mkdir $HOME/tmp/venv
cd $HOME/tmp
python3 -m venv venv
source venv/bin/activate
deactivate # 退出虚拟环境

rm -rf $HOME/tmp/venv # 不需要可删除此目录

# 删除虚拟环境中已安装的包
# 回到虚拟环境刚创建时的状态
python3 -m venv --clear venv

目录结构

package_name/
├── LICENSE
├── MANIFEST.in
├── README.md
├── pyproject.toml
├── src
│   └── package_name
│       └──__init__.py
└── tests
    ├── test_view.py
    └── test_model.py
EntryDescription
package_name包名
LICENSE软件许可协议, e.g. MIT, GPL, Apache…
README.md包的介绍
pyproject.toml包的元信息(对此包之描述), 可类比文件的数据和文件的元信息
src包的源码
testssrc中代码的测试
__init__.py用来说明当前目录是一个包, 内容可以空
MANIFEST.in包的配置文件, 可用来包含非python文件

pyproject.toml

此文件有两个作用:

  • 让构建工具知道此包之信息, 方便构建过程的进行
  • 让LS(Language Server)知道你写的代码是在一个包中而非单个代码文件,
    通过LSP(Language Server Protocol)可实现定义跳转、代码补全等功能.
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "<packagename>"
version = "0.0.1"
authors = [
  { name="author", email="hello@world.com" },
]
description = "Description of this package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
  "Programming Language :: Python :: 3",
  "License :: OSI Approved :: MIT License",
  "Operating System :: OS Independent",
]
dependencies = [
  "matplotlib==3.7.2",
  "numpy==1.25.2",
]

[project.urls]
"Homepage" = "https://github.com/author/packagename"
"Bug Tracker" = "https://github.com/author/packagename/issu
es"

[project.scripts]
packagename = "packagename:main"
  • [build-system]: 源码到源码包的构建工具,这里用的是setuptools.
  • [project]: 包的信息
    • name: 包名
    • version: 包的版本
    • authors: 作者的信息
    • description: 包的描述
    • readme: README.md文件
    • requires-python: 要求的Python版本
    • dependencies: 此包之依赖
  • [project.urls]: 包的链接.
  • [project.scripts]: 包的入口, 相当于C lang中的main函数,
    构建工具会在$PYTHON_HOME/bin中包装此入口, 即可以在CLI中
    直接使用packagename这一命令.

MANIFEST.in

recursive-include src/packagename/ *.ttf *.css
# 包含src/packagename下所有的.ttf和.css文件

代码的运行、调试

# 对src中的文件
cd packagename/src/
python3 -m packagename.main # packagename/src/packagename/main.py

代码的构建

# 进入pyproject.toml所在目录
pip3 install build
python3 -m build
# 此命令会生成dist目录
# 生成的源码包就放在此目录

源码包安装

pip3 install dist/*.tar.gz
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值