学完 Python 基础知识,不知道如何开始写 Python 项目,该怎么办?

不知道你有没有这种感觉,学完 Python 的基础知识,想着手写一个小的 Python 项目,不知道如何下手。甚至,下载的一些开源的 Python 项目看不懂,下面就简单聊一聊 Python 项目的目录接口,如何组织 Python 项目结构才是业界推荐的标准做法。

不知道你有没有这种感觉,学完 Python 的基础知识,想着手写一个小的 Python 项目,不知道如何下手。甚至,下载的一些开源的 Python 项目看不懂,下面就简单聊一聊 Python 项目的目录接口,如何组织 Python 项目结构才是业界推荐的标准做法。

你是不是还在随便创建一个文件夹,里面写满了各种命名的 py 文件,其实 Python 项目和 Java、C 项目一样,也需要对结构进行组织,这样才能更好的管理。

Python 环境

先说如何管理环境,这很重要,不要忽略了!!!

你是不是还在使用全局的 Python 解释器,什么依赖全部安装到全局环境中,就是首次从 Python 官网下载的 Python 安装包,根据提示一路安装下来的环境。

使用起来确实非常方便,如果现在你手里有两个项目,引用了同一个依赖,但是版本不同,怎么办?你首先想到的是统一两个项目的依赖版本,如果版本不能统一呢,这里推荐使用虚拟环境,类似 Linux 虚拟机环境,每个项目一个虚拟环境,各自管理各自的依赖,互不干扰。

在 Python 中,可以使用内置的 venv 模块来管理虚拟环境,你也可以使用 conda 来实现,下面将演示 venv 的用法。

注意了:venv 是 Python 3.3+ 官方内置的虚拟环境工具,不需要额外 pip 安装。

实战

打开命令行界面,执行 python -m venv venv 命令,如下:

# python -m venv 环境名称
python -m venv venv

命令说明:

  • python:调用当前系统的 Python 解释器
  • -m venv:-m 代表以模块方式运行,venv 是 Python 内置虚拟环境模块
  • 末尾 venv:虚拟环境文件夹名称

注意,命令执行完成后,再命令行不会输出任何信息,此时目录或多出 venv 目录。目录结构如下:

其中:

  • bin/ Linux/macOS 环境,存放 python、pip、activate 脚本
  • Scripts/ Windows 环境,存放 python.exe、pip.exe、activate 脚本
  • lib/ Linux/macOS 环境,第三方依赖包存放目录
  • Lib/ Windows 环境,第三方依赖包存放目录
  • pyvenv.cfg 虚拟环境配置文件,记录基于哪个Python版本创建

接着,激活我们创建的虚拟环境,运行 Scripts/bin 目录下面的 activate.bat(Windows),如下:

Linux/MacOS 执行 venv/bin/activate 命令(这里的 venv 是你虚拟环境目录名称),执行后的效果如下:

成功进入 venv 环境后,在使用 pip 安装依赖,是直接安装到当前 venv 环境中的,如下:

进入到 venv\Lib\site-packages 目录可以看见刚刚安装的依赖,如下图:

还可以使用 pop freeze 查看依赖的版本,如下:

当你依赖安装成功后,建议使用 pip freeze > requirements.txt 命令将当前项目所有依赖信息输出到 requirements.txt 文件,后续将项目拷贝给其他人时,可以使用 pip install -r requirements.txt 一键安装所有依赖,这就类似 Java 项目的 pom.xml 文件,将依赖集中管理,保证项目依赖的准确性。

注意,通常 venv 目录中包含了环境信息、依赖库,导致大小比较大,严禁传递到 git 仓库,给别人的代码只包含 python 脚本和 requirements.txt。

如何退出虚拟环境呢?很简单,直接运行 venv\Scripts\deactivate.bat 脚本,如下图:

退出成功,前面没有“(venv)”了。

到这里,环境知识差不多了,足够日常开发了。下面介绍项目结构:

项目结构

如果你是写一些 Demo 代码,有无结构无所谓。如果你要开发一个小项目,创建良好的,符合主流推荐的项目结构还是有必要的。

如果仅是一个很小的项目,直接像下面这样组织:

your_project/
├── venv/     				# 虚拟环境
├── main.py
├── utils.py
├── requirements.txt	# 依赖信息
└── .gitignore

注意了,推荐将 venv 和项目放在一起,一个项目一个 venv。类似前端项目、Node.js 项目的 node_modules 目录。

一些建议:

(1)venv 放在项目根目录,和源代码同级,不要嵌套在代码文件夹里面

your_project/
└── src/
    ├── venv/   # 禁止!不要把venv塞进源码文件夹
    └── main.py

(2)绝对不要把 venv 提交到 Git 仓库,可以在 .gitignore 添加“venv/”这一行,忽略 venv 目录,如下:

venv/
__pycache__/
*.pyc
*.env

如果你想要更标准的项目结构,推荐一份最通用、规范的目录结构,如下:

your_project/                # 项目根目录(git仓库根目录)
├── venv/                    # Python虚拟环境文件夹(自动生成,不要手动改)
├── src/                     # 源代码目录(业务代码放这里)
│   ├── __init__.py
│   ├── main.py              # 程序入口
│   └── utils.py
├── requirements.txt         # 项目依赖清单
├── .gitignore               # git忽略文件(必须写入venv/)
└── README.md

如果你的项目比较大,我们还可以再 src 目录中通过文件夹进行分类、分模块,便于管理,像这样:

your_project/
├── venv/
├── src/
│   ├── __init__.py
│   ├── main.py
│   ├── api/								 # API接口
│   └── service/						 # 服务实现
├── tests/                   # 单元测试
├── requirements.txt
├── requirements-dev.txt     # 开发环境依赖(pytest、flake8等)
├── .gitignore
└── README.md

完整实操流程

下面简单复盘一下项目创建的流程:

(1)创建项目文件夹

mkdir your_project
cd your_project

(2)创建虚拟环境(根目录生成venv)

python -m venv venv

(3)激活环境

# Linux/macOS
source venv/bin/activate

# Windows PowerShell
venv\Scripts\activate

(4)安装依赖后导出包列表

pip freeze > requirements.txt

就是这么简单,学会了没有。。。。

多人协作 / 新机器拉取项目怎么用?别人从 Git 仓库克隆代码后没有 venv 文件夹,这是正常的! 只需按如下进行:

# 1、进入到项目
cd your_project

# 2、创建虚拟环境
python -m venv venv

# 3、激活环境
# Linux/macOS
source venv/bin/activate

# Windows PowerShell
venv\Scripts\activate

# 4、安装依赖
pip install -r requirements.txt

注意了,不要手动一个一个的去安装依赖,直接用导出的依赖清单 requirements.txt 安装,切记切记!!

补充疑问解答:

Q:能不能把 venv 放在项目外面? A:可以,但是不方便。行业常规做法就是项目根目录下放 venv,开箱即用。

Q:多个项目怎么办? A:每个独立项目各自拥有自己根目录下的 venv,互不共用,实现环境隔离。

  

沉浸于现实的忙碌之中,没有时间和精力思念过去,成功也就不会太远了。——雷音
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号