前言
开始补 Python,我的第一感觉是:它确实很适合入门,但也很容易因为“看起来简单”而忽略基础。
比如很多教程第一句就是print("Hello World"),确实能跑。但跑在哪里?用的是哪个 Python?依赖装到哪里了?为什么有时候命令是python,有时候是python3?这些问题不弄清楚,后面学到包管理和项目开发时会很乱。
所以第一篇不急着写复杂代码,先记录 Python 环境、解释器、虚拟环境和运行方式。
Python 是解释型语言吗
刚开始学时,经常会听到 Python 是解释型语言。
大概可以理解为:我们写的.py文件不是先编译成一个独立可执行文件再运行,而是交给 Python 解释器执行。
比如:
print("hello python")
保存成hello.py后,可以运行:
python hello.py
这里真正执行代码的是 Python 解释器。你电脑里装的 Python 版本不同,执行结果和可用特性也可能不同。
这点很重要。因为 Python 版本变化会影响语法和库。学习阶段最好固定一个比较新的稳定版本,不要电脑上多个版本混着用。
python 和 python3
很多资料里命令不统一,有的写python,有的写python3。
这和操作系统、安装方式、历史版本都有关系。有些系统里python可能指向 Python 2,有些指向 Python 3,有些根本没有这个命令。
现在学习当然应该用 Python 3。可以先看版本:
python --version
python3 --version
如果两个命令都能用,要确认自己后面一直用同一个。不要今天用python装依赖,明天用python3运行程序。这样很容易出现“明明安装了包,运行却说找不到”的问题。
交互模式很好用
Python 有一个很适合学习的交互模式。
直接输入:
python
进入后可以一行一行执行:
1 + 2
print("hello")
这个模式适合试小代码。比如测试字符串方法、列表操作、简单计算,不用每次新建文件。
但它不适合写完整程序。稍微复杂一点,还是应该放进.py文件里。文件能保存、能重复运行、能提交到 Git,这才是项目开发的方式。
虚拟环境是什么
Python 初学最容易绕晕的是依赖安装。
比如你学爬虫装了requests,学数据分析装了pandas,学 Web 又装了flask。如果都装到全局环境,时间久了会很乱。
虚拟环境就是给每个项目一个相对独立的 Python 依赖空间。项目 A 装的包,不影响项目 B。
创建虚拟环境:
python -m venv .venv
激活虚拟环境:
source .venv/bin/activate
激活后再安装依赖:
pip install requests
这样依赖会装到当前项目的.venv里。
pip 是干什么的
pip 是 Python 常用包管理工具。
安装包:
pip install requests
查看已安装包:
pip list
导出依赖:
pip freeze > requirements.txt
别人拿到项目后,可以用:
pip install -r requirements.txt
安装同样依赖。
刚开始学习时,不一定要马上研究 Poetry、uv、conda 这些工具。先把 Python、venv、pip、requirements.txt 理解清楚,已经够用了。
脚本怎么运行
最普通的方式就是:
python demo.py
如果文件里有:
print("start")
运行时就会输出。
Python 没有 Java 那样的public static void main,但常见写法是:
def main():
print("hello")
if __name__ == "__main__":
main()
这段代码的意思是:当这个文件被直接运行时,执行 main 函数;如果它被别的文件 import,就不要自动执行 main。
刚开始看可能有点怪,但后面写模块时会经常用到。
IDE 也要认准解释器
用 VS Code、PyCharm 这类工具写 Python 时,要确认 IDE 选择的是哪个解释器。
如果命令行激活的是.venv,但 IDE 用的是全局 Python,就会出现代码提示和运行结果不一致。
所以每个项目创建虚拟环境后,要在 IDE 里选择当前项目的.venv/bin/python。
这一步很基础,但能省很多排查时间。
小结
Python 入门第一步,不只是会写print。
要先弄清楚解释器版本、运行命令、交互模式、虚拟环境、pip 和 IDE 解释器选择。环境稳定了,后面学变量、函数、文件、第三方库才不会总被“包找不到”“版本不对”打断。
我的理解是,学习 Python 可以简单开始,但不能糊涂开始。环境这块花一点时间,后面会轻松很多。
If you enjoyed this, leave a comment~