第二章:环境准备——工欲善其事,必先利其器

说实话,我见过太多人一上来就急着写代码,结果环境配了三天还没跑通第一个例子。嗯,这章咱们就把地基打牢。你想想看,如果连Linux基本操作都磕磕绊绊,后面自动化脚本写得再漂亮也跑不起来。

本章核心目标:让你能在15分钟内搭好一套可用的Python开发环境,熟练使用Git做版本控制,并且理解虚拟环境到底解决了什么问题。

2.1 Linux基础命令回顾

我个人习惯用Ubuntu做开发机。为什么?因为社区活跃,遇到坑好搜。但不管什么发行版,下面这几个命令你闭着眼都得会。

2.1.1 文件与目录操作

# 我每天敲最多的几个命令
pwd                     # 我在哪?
ls -la                  # 看看当前目录有啥
cd /path/to/project     # 去项目目录
mkdir -p src/utils      # 创建嵌套目录
cp -r old_dir new_dir   # 复制整个目录
rm -rf temp_dir         # 小心!这命令删了不经过回收站

⚠️ 我曾经犯过的错:有一次在服务器上执行 rm -rf / temp/,多打了个空格。结果系统文件被删了一半...从那以后,我每次用rm -rf都会先ls确认路径,或者用mv到临时目录代替删除。

2.1.2 权限与进程管理

权限问题在CI/CD流水线里特别常见。你写了个脚本,部署时发现没执行权限——这种低级错误我见过不下十次。

chmod +x deploy.sh       # 给脚本加执行权限
chown -R user:group ./   # 修改目录所有者
ps aux | grep python     # 看看Python进程在不在
kill -9 PID              # 强制杀进程(慎用)
nohup python app.py &    # 后台运行,退出终端也不停

2.2 Python环境搭建

Python版本管理是个大坑。系统自带的Python 2.7早该退休了,但很多老项目还在用。我个人建议:用pyenv管理多版本,别碰系统Python。

2.2.1 安装pyenv

# 一键安装pyenv
curl https://pyenv.run | bash

# 配置到shell(以bash为例)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 安装Python 3.10.12
pyenv install 3.10.12
pyenv global 3.10.12   # 设为全局默认版本

💡 小技巧:pyenv安装Python时可能会因为缺少依赖报错。我一般先跑 sudo apt install build-essential libssl-dev zlib1g-dev 把编译工具链装全,省得折腾。

2.2.2 验证安装

python --version        # 应该显示 3.10.12
pip --version           # 确认pip可用
pip list                # 看看已安装的包

2.3 Git版本控制基础

Git是CI/CD的命根子。没有版本控制,你根本没法做自动化构建和回滚。我记得刚带团队时,有个同事直接在服务器上改代码,改完也不提交。结果服务器崩了,代码找不回来...从那以后我立了规矩:所有变更必须走Git。

2.3.1 核心工作流

# 初始化仓库
git init

# 配置用户信息(第一次用必须配)
git config --global user.name "Your Name"
git config --global user.email "your@email.com"

# 日常三连
git add .               # 暂存所有改动
git commit -m "feat: 添加用户登录功能"  # 提交
git push origin main    # 推送到远程

2.3.2 分支管理

我推荐用Git Flow模型。说白了就是:main分支永远保持可部署状态,开发在develop分支上,新功能开feature分支。

# 创建并切换到新分支
git checkout -b feature/login

# 合并分支
git checkout main
git merge feature/login

# 删除已合并的分支
git branch -d feature/login

关键点:合并前一定要先 git pull 拉取最新代码。我见过太多人合并时产生冲突,就是因为本地代码太旧了。

2.4 虚拟环境管理

为什么需要虚拟环境?说白了就是隔离依赖。你想想看,项目A用Django 3.2,项目B用Django 4.0,装在一起肯定打架。虚拟环境就是给每个项目一个独立的Python小天地。

2.4.1 使用venv(Python内置)

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

# 激活(Linux/Mac)
source venv/bin/activate

# 激活(Windows)
venv\Scripts\activate

# 退出
deactivate

2.4.2 使用pipenv(更现代的方式)

我个人更推荐pipenv。它把包管理和虚拟环境合二为一,还自动生成Pipfile和Pipfile.lock,确保团队环境一致。

# 安装pipenv
pip install pipenv

# 创建虚拟环境并安装依赖
pipenv install requests

# 激活虚拟环境
pipenv shell

# 生成requirements.txt(给不用pipenv的人用)
pipenv lock -r > requirements.txt

⚠️ 注意:不要把虚拟环境目录提交到Git!在项目根目录创建 .gitignore 文件,加上 venv/ 或 .venv/。我曾经看到有人把整个虚拟环境(几百MB)推到GitHub上,被同事骂惨了。

2.5 本章知识体系

下面这张图是我自己总结的环境准备核心流程。你照着这个顺序来,基本不会出错。

环境准备核心流程 Linux基础命令 Python环境搭建 Git版本控制 虚拟环境管理 前置基础 → 核心工具 → 依赖隔离

2.6 避坑总结

最后,我把这些年踩过的坑整理成一张表。你照着这个检查,能省不少时间。

常见问题 原因 解决方案
pip安装包报权限错误 直接用系统Python装包 使用虚拟环境,或者加 --user 参数
Git提交后才发现漏了文件 没有先 git status 检查 养成提交前 git status 的习惯
虚拟环境激活后pip还是全局的 PATH顺序不对 检查 which pip 路径,重新激活环境
rm -rf 删错文件 手滑或者路径写错 用 mv 到临时目录代替直接删除

嗯,环境准备就这些。你把这些搞定了,后面写自动化脚本、配CI/CD流水线,都会顺手很多。记住:基础不牢,地动山摇。别急着跑,先把路走稳。

可可精品资料库