第二章:环境准备——工欲善其事,必先利其器
说实话,我见过太多人一上来就急着写代码,结果环境配了三天还没跑通第一个例子。嗯,这章咱们就把地基打牢。你想想看,如果连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 本章知识体系
下面这张图是我自己总结的环境准备核心流程。你照着这个顺序来,基本不会出错。
2.6 避坑总结
最后,我把这些年踩过的坑整理成一张表。你照着这个检查,能省不少时间。
| 常见问题 | 原因 | 解决方案 |
|---|---|---|
| pip安装包报权限错误 | 直接用系统Python装包 | 使用虚拟环境,或者加 --user 参数 |
| Git提交后才发现漏了文件 | 没有先 git status 检查 |
养成提交前 git status 的习惯 |
| 虚拟环境激活后pip还是全局的 | PATH顺序不对 | 检查 which pip 路径,重新激活环境 |
| rm -rf 删错文件 | 手滑或者路径写错 | 用 mv 到临时目录代替直接删除 |
嗯,环境准备就这些。你把这些搞定了,后面写自动化脚本、配CI/CD流水线,都会顺手很多。记住:基础不牢,地动山摇。别急着跑,先把路走稳。