一、开篇:windows用户的专属配置指南
光把python装上去还远远不够——windows作为python开发的"非原生"平台(python诞生于unix环境),有它自己的一套配置逻辑和常见坑点。这篇文章就是windows用户的专属深度指南。
我会把windows平台上python开发的各种配置细节、实用技巧、常见问题一网打尽。读完这篇,你就能把windows打造成一个顺手的python开发环境。
二、重新认识python在windows上的安装结构
2.1 python安装目录全解析
当你把python装到 d:\python312(或其他自定义路径)后,来看看这个目录里都有什么:
d:\python312\ ├── python.exe ← 这是python解释器的主程序 ├── pythonw.exe ← 无控制台窗口的python解释器(运行gui程序用) ├── lib\ ← python标准库,所有自带的模块都在这里 │ ├── os.py ← os模块的源码 │ ├── json.py ← json模块的源码 │ └── site-packages\ ← 第三方库的安装目录(pip安装的包在这里) ├── scripts\ ← 可执行脚本目录 │ ├── pip.exe ← pip包管理工具 │ ├── pip3.exe │ └── jupyter.exe ← 如果安装了jupyter ├── doc\ ← python官方文档(如果安装时勾选了) ├── include\ ← c头文件(写c扩展时用) ├── libs\ ← c语言静态库 ├── tcl\ ← tcl/tk gui库 └── tools\ ← 一些实用工具脚本
了解这个结构很有用。比如你以后想知道某个第三方库装到哪里了,去 lib\site-packages\ 找就行。
2.2 python.exe vs pythonw.exe
windows上有两个解释器程序:
python.exe:运行时会打开一个控制台窗口,适合命令行脚本pythonw.exe:运行时没有控制台窗口,适合gui程序(比如用tkinter写的桌面应用)
# test_gui.py - 用pythonw.exe运行不会有黑窗口
import tkinter as tk
root = tk.tk()
root.title("我的gui程序")
tk.label(root, text="hello from python!").pack()
root.mainloop()
如果你双击运行上述脚本,用 pythonw.exe 就不会弹出一个黑黢黢的命令行窗口。
2.3 python launcher(py.exe)详解
这是windows平台上独有的好东西。在安装python时如果勾选了"py launcher",你的系统里会多一个 py.exe 命令。
py launcher的作用:让你在一台电脑上方便地管理和切换多个python版本。
# 查看系统中安装了哪些python版本 py --list # 可能的输出: # -3.12-64 * # -3.11-64 # -3.9-32 # 星号(*)表示当前默认版本 # 用指定版本运行脚本 py -3.12 hello.py # 用python 3.12运行 py -3.11 hello.py # 用python 3.11运行 py -3.9 hello.py # 用python 3.9运行 # 用默认的python 3版本运行 py -3 hello.py # 启动指定版本的交互式环境 py -3.12
py.exe 的工作原理是:它安装在 c:\windows\ 目录下(这个目录在path中),运行时会根据参数去查找已安装的python版本,然后调用对应的 python.exe。
你可以为每个python脚本指定它需要的python版本。在脚本的第一行添加shebang:
#!python3.12
# 这个脚本强制使用python 3.12运行
import sys
print(f"当前python版本: {sys.version}")
py.exe 会读取这个shebang并选择正确的解释器。
注意:py launcher只在windows上有。mac和linux用的是 python3 命令或pyenv等工具。
三、path环境变量深度解析
3.1 path到底是干什么的
这是windows新手最困惑的概念之一。让我用大白话解释:
当你在命令行输入 python 时,系统怎么知道去执行 d:\python312\python.exe 呢?答案就是path。
path是一个"查找路径列表"。系统按顺序逐个目录查找你要执行的程序,找到了就运行,找不到就去下一个目录找,所有目录都找不到就报"不是内部或外部命令"。
# 查看当前path(在cmd中)
echo %path%
# 查看当前path(在powershell中)
$env:path -split ';'
# 用python查看path
python -c "import os; [print(p) for p in os.environ['path'].split(';') if p]"path中每个目录用分号(;)隔开。一个典型的path可能是:
c:\windows\system32;c:\windows;c:\python312;c:\python312\scripts;...
3.2 path中关于python的条目
一个完整配置的windows python环境,path中应该有两个条目:
d:\python312— 包含python.exe,让你能直接输入pythond:\python312\scripts— 包含pip.exe、jupyter.exe等脚本工具
# 验证path配置是否正确 where python # 应该显示python安装路径 where pip # 应该显示scripts路径
如果这两个命令都正常显示路径,说明path配置正确。
3.3 手动配置path的正确步骤
如果你安装时忘了勾选"add python to path",或者想修改path,按以下步骤操作:
① 按 win + r,输入 sysdm.cpl,回车(快速打开系统属性)
② 点击"高级"选项卡→"环境变量"按钮
③ 环境变量窗口分为上下两部分:
- 上面是"用户变量":只对当前用户生效
- 下面是"系统变量":对所有用户生效
④ 选中"用户变量"中的 path,点击"编辑"
⑤ 点击"新建",添加两条记录(按你自己的安装路径):
d:\python312 d:\python312\scripts
⑥ 用"上移"按钮把这两条移到靠前的位置(系统会按从上到下的顺序查找)
⑦ 一路点"确定"关闭所有窗口
关键点:修改环境变量后,之前打开的命令行窗口不会生效。你需要关闭后重新打开命令行,或者重启电脑。
3.4 path优先级导致的问题
这是windows上最经典的python坑:
场景:你先装了python 3.11(在 c:\python311),后来又装了python 3.12(在 d:\python312)。现在你在命令行输入 python,启动的是哪个版本?
答案是:path中排在前面的那个目录里的python.exe。
# 检查当前python命令实际指向的文件 where python
解决方法:
- 调小path中条目的顺序,把你需要用的版本放在前面
- 或者直接用
py -3.12来指定版本(推荐) - 或者在项目中使用虚拟环境,隔离不同版本
四、pip在windows上的深度配置
4.1 pip配置文件的位置
在第2篇文章中我们简单配置了pip镜像源。这里详细说说windows上pip的配置文件体系。
pip的配置有三级优先级(后面覆盖前面):
| 级别 | 配置文件位置 | 作用范围 |
|---|---|---|
| global | %programdata%\pip\pip.ini | 系统全局 |
| user | %userprofile%\pip\pip.ini | 当前用户 |
| site | {python安装目录}\lib\site-packages\pip\pip.conf | 当前python实例 |
# 查看pip当前生效的配置 pip config list # 查看配置文件的具体位置 pip config list -v
推荐使用用户级配置(%userprofile%\pip\pip.ini),不影响其他用户,也不需要管理员权限。
4.2 完整的pip.ini配置参考
[global]
# 镜像源
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
# 额外的镜像源(主源挂了就尝试这些)
extra-index-url =
https://mirrors.aliyun.com/pypi/simple
https://pypi.mirrors.ustc.edu.cn/simple
# 超时时间(秒)
timeout = 120
# 信任的主机(跳过ssl验证)
trusted-host =
pypi.tuna.tsinghua.edu.cn
mirrors.aliyun.com
pypi.mirrors.ustc.edu.cn
[install]
# 安装时总是显示进度条
progress-bar = on
# 不使用缓存(调试时开启)
# no-cache-dir = false
[list]
# pip list 的输出格式 (legacy, columns, freeze, json)
format = columns4.3 pip缓存管理
pip会把下载的包缓存到本地,以后再安装相同版本的包时就不需要重新下载了:
# 查看缓存目录 pip cache dir # 查看缓存占用空间 pip cache info # 清理缓存(释放磁盘空间) pip cache purge # 只清理特定包的缓存 pip cache remove requests
缓存目录默认在 %localappdata%\pip\cache,随着时间推移可能会占用几个g的空间。如果你c盘空间紧张,定期清理一下。
4.4 安装包时的常用选项
# 安装指定版本 pip install requests==2.28.0 # 安装大于等于某版本 pip install 'requests>=2.28.0' # 安装时不使用缓存(适用于怀疑缓存有问题) pip install requests --no-cache-dir # 安装到用户目录而不是系统目录(不需要管理员权限) pip install requests --user # 从requirements.txt批量安装 pip install -r requirements.txt # 生成当前环境的包列表 pip freeze > requirements.txt # 升级pip自身 python -m pip install --upgrade pip
五、windows terminal:命令行体验升级
5.1 告别老旧的cmd
windows自带的命令提示符(cmd)功能非常有限:不能多标签页、字体难看、颜色单调、不支持unicode的一些特殊字符。
✅ microsoft开发了一款全新的终端工具:windows terminal。它支持多标签页、自定义主题、gpu加速渲染、unicode完美支持。你可以在microsoft store中免费下载。
5.2 安装windows terminal
① 打开microsoft store(win 10/11自带)
② 搜索"windows terminal"
③ 点击"获取"安装
或者使用winget命令行安装:
winget install microsoft.windowsterminal
5.3 配置windows terminal用于python开发
打开windows terminal,点击标签栏的"+“下拉菜单→"设置”(或按 ctrl + ,)。
推荐配置项:
外观设置(settings.json核心部分):
{
"profiles": {
"defaults": {
"fontface": "cascadia code", // 微软的现代等宽字体,支持连字
"fontsize": 12,
"cursorshape": "filledbox",
"startingdirectory": "d:\\projects\\python" // 默认打开的工作目录
},
"list": [
{
"guid": "{...}",
"name": "python dev",
"commandline": "cmd.exe",
"startingdirectory": "d:\\projects\\python",
"tabtitle": "python",
"suppressapplicationtitle": true
}
]
}
}windows terminal支持在同一个窗口里同时打开cmd、powershell、git bash等多个标签页。写python时,可以一个标签页跑程序,另一个标签页操作git,效率极高。
5.4 让终端运行python更方便
在windows terminal的设置中,你可以添加一个专门的python配置:
{
"guid": "{生成一个新的guid}",
"name": "python 3.12",
"commandline": "d:\\python312\\python.exe",
"icon": "d:\\python312\\python.exe",
"hidden": false
}这样在windows terminal的"+"菜单中就会多出一个"python 3.12"的选项,点击直接打开python交互环境。
六、powershell中的python使用技巧
6.1 powershell vs cmd
powershell是windows的新一代命令行解释器,比cmd强大得多。如果你还在用cmd,建议迁移到powershell或windows terminal中配合使用。
# powershell中运行python脚本
python hello.py
# 使用管道
python -c "print('hello')" | out-file output.txt
# 查看python命令的帮助
get-help python
# powershell特有的变量和python配合
$name = "小明"
python -c "print('hello $env:name')" # 这样不行
python -c "import os; print(f'hello {os.environ[\"name\"]}')" # 这样也不行
# 正确做法:
$env:name = "小明"
python -c "import os; print('hello ' + os.environ['name'])"6.2 powershell执行策略问题
在powershell中运行python虚拟环境的激活脚本时,可能会遇到执行策略错误:
# 错误信息: # 无法加载文件 xxx\scripts\activate.ps1,因为在此系统上禁止运行脚本 # 查看当前执行策略 get-executionpolicy # 修改为允许本地脚本运行(需要管理员权限的powershell) set-executionpolicy -executionpolicy remotesigned -scope currentuser
⚠️ remotesigned 策略允许运行本地创建的脚本,但下载的脚本需要数字签名。这是安全和使用便利之间的一个平衡选择。
6.3 创建powershell别名简化操作
编辑你的powershell配置文件:
# 查看配置文件路径 echo $profile # 如果配置文件不存在,创建它 new-item -path $profile -type file -force # 编辑配置文件 notepad $profile
在配置文件中添加python相关的别名:
# python相关别名
function py { python $args }
function pipi { pip install $args }
function pipu { pip uninstall $args }
function pipl { pip list }
function venv-new { python -m venv $args[0]; write-host "虚拟环境 $args[0] 创建完成!" }
function venv-on { .\$args[0]\scripts\activate.ps1 }
function venv-off { deactivate }
# 快速进入常用的python项目目录
function cd-py { set-location d:\projects\python }
保存后重新打开powershell,你就可以用简短的命令操作了:
cd-py # 快速进入python目录 venv-new myproject # 创建虚拟环境 venv-on myproject # 激活虚拟环境 pipi requests # 安装包 pipl # 列出已安装的包
七、多版本python共存的完整方案
7.1 为什么需要多版本
实际工作中你可能会遇到这些场景:
- 公司老项目用的是python 3.9,新项目要用python 3.12
- 测试一个第三方库是否兼容不同python版本
- 想试用最新版本python的新特性,但保持主力开发版本不变
7.2 方案一:py launcher(最推荐)
这是windows上最简单优雅的方案:
# 查看所有已安装的python py --list # 创建虚拟环境时指定版本 py -3.9 -m venv project_old py -3.11 -m venv project_stable py -3.12 -m venv project_new # 用pip安装包时指定版本 py -3.9 -m pip install pandas py -3.12 -m pip install pandas # 在脚本shebang中指定版本 #!python3.9 import sys print(sys.version)
7.3 方案二:虚拟环境隔离(必学)
无论你用哪个python版本,每个项目都应该有自己的虚拟环境:
# 创建虚拟环境 python -m venv myproject_env # 激活虚拟环境(windows) myproject_env\scripts\activate # 激活后,命令行前缀会显示环境名 (myproject_env) d:\projects> # 此时安装的包都只在当前环境中 pip install pandas # 退出虚拟环境 deactivate
💡 虚拟环境的核心思想:每个项目拥有一套独立的第三方包。项目a用pandas 1.5,项目b用pandas 2.0,互不干扰。
7.4 方案三:使用conda
如果你涉及数据科学、机器学习,conda是一个威力强大的选择:
# 安装miniconda(轻量版,只有conda+python+pip) # 从 https://docs.conda.io/en/latest/miniconda.html 下载 # 创建不同版本的python环境 conda create -n py39 python=3.9 conda create -n py311 python=3.11 conda create -n py312 python=3.12 # 激活环境 conda activate py312 # 安装包(conda会处理更复杂的依赖关系) conda install numpy pandas matplotlib # 查看所有环境 conda env list # 导出环境配置 conda env export > environment.yml
conda和pip的核心区别在于:conda不仅管理python包,还管理非python的依赖(比如c语言库、系统级工具)。这对科学计算库(numpy、scipy等)尤其重要,因为它们底层依赖大量c/fortran库。
八、常用ide和编辑器的选择
8.1 各编辑器简明对比
| 工具 | 类型 | 适合人群 | 优缺点 |
|---|---|---|---|
| idle | 简易ide | 纯新手 | python自带,无需安装,但功能太少 |
| pycharm | 重量级ide | 专业开发者 | 功能最全,但较吃内存(建议8gb以上) |
| vs code | 轻量级编辑器+插件 | 通用开发者 | 轻量灵活,插件丰富,免费 |
| sublime text | 纯编辑器 | 简洁主义 | 启动极快,python支持要自己配 |
| notepad++ | 纯编辑器 | 简单编辑 | 超级轻量,只适合偶尔看代码 |
后续我们有专门的pycharm和vs code详细教程。这里给出结论:
- 如果你是新手,想省心:选pycharm社区版
- 如果你需要同时写多种语言:选vs code
- 如果你的电脑配置不高(4gb内存):选vs code或sublime text
- 如果你做数据科学:选jupyter notebook / jupyter lab
8.2 不用ide也能写python
在配置好path的前提下,任何文本编辑器都可以写python:
# 用记事本写python(最简方法) notepad hello.py # 写好代码后,命令行运行 python hello.py
当然,没有代码补全和语法高亮,写起来会比较辛苦。但理解这一点很重要:ide只是辅助工具,真正的"写代码+运行"就靠python.exe就够了。
九、windows特有的常见问题排查
9.1 “api-ms-win-crt-runtime-l1-1-0.dll 缺失”
这是windows 7或windows server 2008 r2等老系统上常见的问题。
原因:缺少visual c++ redistributable for visual studio 2015运行库。
解决方法:
- 下载并安装 vc_redist.x64.exe(从微软官网)
- 或者把系统更新到windows 10/11
9.2 python安装后无法通过https下载包
warning: retrying ... ssl: certificate_verify_failed
原因:通常是公司网络有代理或者系统根证书过期。
解决方法:
# 临时跳过ssl验证(不推荐,仅用于紧急情况) pip install requests --trusted-host pypi.org --trusted-host files.pythonhosted.org # 永久解决(推荐):更新根证书 # 方法1:安装/更新 certifi 包 pip install --upgrade certifi # 方法2:在pip.ini中配置信任主机(见第四节)
9.3 中文编码问题
windows的默认编码是gbk,而python 3默认使用utf-8。这在处理中文文件时可能出问题:
# 写文件时指定编码
with open('中文文件.txt', 'w', encoding='utf-8') as f:
f.write('python中文处理')
# 读文件时指定编码
with open('中文文件.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 如果遇到gbk编码的文件
with open('老文件.txt', 'r', encoding='gbk') as f:
content = f.read()
从python 3.7开始,windows上的python默认使用utf-8编码。但为了兼容性,处理中文文件时最好显式指定 encoding='utf-8'。
9.4 文件关联问题
双击 .py 文件时可能出现的情况:
- 直接运行:代码一闪而过(因为是控制台程序,执行完就关了)
- 用编辑器打开:如果你装了pycharm或vs code
- 显示"打开方式"对话框:没有正确设置文件关联
修改方法:右键 .py 文件→"属性"→"打开方式"→选择你想要的程序。
十、windows上python开发的最佳实践总结
一套完整的、精心配置的windows python开发环境应该包括:
- python 3.11或3.12:从python.org下载安装,务必勾选"add python to path"
- pip镜像源配置:
%userprofile%\pip\pip.ini中配置清华或阿里镜像 - py launcher:利用它管理多版本python
- windows terminal:取代老旧的cmd,享受多标签和美观界面
- 代码编辑器:pycharm社区版或vs code,根据个人偏好选择
- 每个项目使用虚拟环境:
python -m venv env,隔离项目依赖 - 编码习惯:文件操作时显式指定
encoding='utf-8'
把这七样配置好,你的windows就完全可以胜任从入门学习到专业开发的python工作。不要相信"写python必须用mac/linux"的说法——windows上的python开发生态已经非常成熟,足够你从零到精通。
以上就是windows平台下python环境的配置方法的详细内容,更多关于windows下python环境配置的资料请关注代码网其它相关文章!
发表评论