1. Linux环境下的Python开发基础
对于Python开发者来说,熟悉Linux操作系统的基本命令是必备技能。我在实际工作中发现,90%以上的Python项目最终都会部署在Linux服务器上运行。掌握这些基础命令不仅能提高开发效率,还能帮助你在服务器环境中快速定位和解决问题。
Linux命令行与Python开发的关系就像螺丝刀和螺丝的关系——虽然Python是主要工具,但没有Linux命令的配合,很多工作都无法高效完成。特别是在处理文件操作、进程管理、环境配置等场景时,直接使用命令行往往比编写Python脚本更快捷。
提示:本文介绍的命令在大多数Linux发行版(如Ubuntu、CentOS)中都适用,但某些参数可能在特定版本中有差异。
2. 文件与目录操作命令
2.1 基础导航命令
pwd命令(Print Working Directory)是最基础但最常用的命令之一。它显示当前所在目录的完整路径。在复杂的项目目录结构中,这个命令能帮你快速确认自己的位置。
$ pwd /home/user/projects/python_projectls命令用于列出目录内容。我强烈建议新手养成使用ls -l的习惯,因为长格式显示能提供更多有用信息:
$ ls -l total 16 drwxr-xr-x 2 user user 4096 Mar 10 14:30 docs -rw-r--r-- 1 user user 1234 Mar 10 14:30 main.py drwxr-xr-x 3 user user 4096 Mar 10 14:30 tests其中各列含义依次为:文件权限、链接数、所有者、所属组、大小、修改时间和文件名。对于Python开发者,经常需要检查文件权限(特别是执行权限)和修改时间。
cd命令用于切换目录。几个实用技巧:
cd ~快速回到用户主目录cd -返回上一个工作目录cd ../..向上移动两级目录
2.2 文件操作命令
cp和mv命令分别用于复制和移动文件。在Python项目中,我经常用它们来备份或重组项目结构:
# 复制并重命名文件 $ cp config_sample.py config.py # 移动整个目录 $ mv old_module/ new_project/modules/rm命令用于删除文件或目录。特别注意rm -r会递归删除目录及其内容。我曾经不小心删除了整个项目目录,所以建议:
- 先用
ls确认要删除的内容 - 考虑先
mv到临时目录而不是直接删除 - 对重要文件使用
rm -i交互式删除
touch命令不仅可以创建空文件,还能更新文件的时间戳。这在构建系统中很有用:
$ touch requirements.txt # 更新修改时间,触发重新安装2.3 文件内容查看命令
cat适合查看小文件内容,而less更适合大文件(支持上下滚动):
$ cat settings.py # 查看配置文件 $ less large_log.txt # 分页查看日志head和tail分别显示文件开头和结尾部分。调试Python程序时,tail -f实时监控日志非常有用:
$ tail -f debug.log # 实时查看日志更新grep是文本搜索神器。查找Python文件中所有import语句:
$ grep -n "import" *.py # -n显示行号3. Python开发专用命令
3.1 Python环境管理
python3 --version检查Python版本。在同时存在Python 2和3的系统上,明确使用python3很重要:
$ python3 --version Python 3.8.10which python3显示Python解释器的安装路径:
$ which python3 /usr/bin/python33.2 包管理命令
pip3 list查看已安装的Python包。结合grep可以快速查找特定包:
$ pip3 list | grep numpy numpy 1.21.5pip3 freeze > requirements.txt生成项目依赖文件。部署时使用:
$ pip3 install -r requirements.txt3.3 脚本执行与调试
直接运行Python脚本:
$ python3 script.py带参数运行:
$ python3 train.py --epochs 50 --batch_size 32调试模式运行(会在遇到异常时进入pdb):
$ python3 -m pdb script.py4. 系统监控与进程管理
4.1 资源监控命令
top实时显示系统资源使用情况。查看Python进程占用资源:
$ top -p $(pgrep -d',' python3)htop是增强版的top,支持鼠标操作和彩色显示(需安装):
$ sudo apt install htop $ htopfree -h查看内存使用情况(-h表示人类可读格式):
$ free -h total used free shared buff/cache available Mem: 15Gi 4.2Gi 8.3Gi 1.2Gi 2.5Gi 9.4Gi Swap: 2.0Gi 0.0Ki 2.0Gi4.2 进程管理命令
ps aux | grep python查找所有Python进程:
$ ps aux | grep python user 12345 0.5 2.1 123456 78900 ? Sl 14:30 0:10 python3 app.pykill终止进程。先用ps找到PID,然后:
$ kill -9 12345 # -9表示强制终止nohup让进程在后台持续运行(即使退出终端):
$ nohup python3 server.py > server.log 2>&1 &5. 网络相关命令
5.1 网络检测命令
ping测试网络连通性。检查是否能访问PyPI:
$ ping pypi.org PING pypi.org (151.101.192.223) 56(84) bytes of data. 64 bytes from 151.101.192.223: icmp_seq=1 ttl=57 time=12.3 mscurl可用于测试API接口(比Python的requests更快捷):
$ curl -X GET "https://api.example.com/data" -H "Authorization: Bearer token"5.2 端口检查命令
netstat或ss查看端口占用情况。检查8000端口是否被Python程序占用:
$ ss -tulnp | grep 8000 tcp LISTEN 0 128 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=12345,fd=3))lsof也可以查看端口占用:
$ sudo lsof -i :8000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python3 12345 user 3u IPv4 123456 0t0 TCP *:8000 (LISTEN)6. 实用技巧与问题排查
6.1 命令组合技巧
统计项目中.py文件的行数:
$ find . -name "*.py" | xargs wc -l查找所有包含"TODO"注释的Python文件:
$ grep -rn "TODO" --include="*.py" .6.2 常见问题解决
问题1:python3: command not found解决方法:
$ sudo apt update $ sudo apt install python3问题2:pip3: command not found解决方法:
$ sudo apt install python3-pip问题3:权限不足错误 解决方法:使用sudo或修改文件权限:
$ chmod +x script.py # 添加执行权限6.3 环境变量设置
查看当前环境变量:
$ printenv临时设置Python路径:
$ export PYTHONPATH=/path/to/your/project永久设置(添加到~/.bashrc):
$ echo 'export PYTHONPATH=/path/to/your/project' >> ~/.bashrc $ source ~/.bashrc7. 进阶工具推荐
7.1 终端复用器
tmux允许在单个终端窗口中创建多个会话,特别适合远程开发:
$ sudo apt install tmux $ tmux new -s python_dev # 新建会话 # Ctrl+b d 分离会话 $ tmux attach -t python_dev # 重新连接7.2 文件查找命令
find命令的强大用法:
查找所有大于1MB的.py文件:
$ find . -name "*.py" -size +1M查找并删除所有.pyc文件:
$ find . -name "*.pyc" -delete7.3 性能分析工具
time命令测量Python脚本执行时间:
$ time python3 script.py real 0m1.234s user 0m1.123s sys 0m0.111scProfile生成性能分析报告:
$ python3 -m cProfile -o profile.out script.py $ python3 -m pstats profile.out掌握这些Linux命令后,你会发现Python开发效率显著提升。建议每天练习几个命令,逐渐形成肌肉记忆。在实际项目中遇到问题时,先想想是否有合适的Linux命令可以解决,这往往比写Python代码更高效。