Windows 系统安装 Python 3.8 详解
安装 Python 很简单,但是其中的很多细节未必大家都清楚,趁着给自己安装最新 3.8 版本,把整个过程详细记录下。
Python or Anaconda
本节是专门写给一些小白,Python 还没弄明白就遇到其他人随便丢下一句话:“安装 Anaconda” 的情况。
没听说过 Anaconda 的,可直接跳过本节。
很清楚 Anaconda 是什么的,可以考虑直接跳过本文。
Anaconda 这个单词和 Python 一样,都是蟒蛇的意思。它是一个用于科学计算的 Python 发行版。所谓的发行版,可以理解为增强版,就是把一些(特定领域)常用的工具和库都打包到了一起。
所以 Anaconda 的体积比 Python 大很多。
虽然里面包含了很多成熟好用的工具,但是对于入门者学习 Python 来说弊大于利。所以不推荐新人安装。
Python 掌握了之后,有需要的时候再来折腾它也不迟。
这其中有一个工具
Jupyter
是对教学有帮助的神器,我们会在合适的时候单独介绍。
32 位 or 64 位
打开 Python 官网: python.org,默认的下载按钮提供的是 32 位的安装包。
绝大多数情况下,特别是学习阶段,32 位还是 64 位没有区别。今后我们编写的所有 Python 代码,也不会区分是多少位。
大家现在所用的 Python 是 C 语言实现的 CPython,它可以直接使用 C 语言编写的模块。这些 C 语言模块针对不同位数的 Python 编译出来的结果只能用在特定的版本上。
大多数情况下,这些模块会同时提供针对不同位数的版本,直接使用 pip install
的时候会自动匹配。只是有些时候手动下载安装包的时候,需要注意版本要匹配一致。例如:
即使以后因为特殊情况,需要某一个特定的 Python 版本,重新安装一个即可,所以这里我们也不必过于纠结。像我这种有点强迫症的必须选择和操作系统一致的。
细心的小伙伴可能注意到,表示 64 位的形式是不一样的,有
x86-64
,也有amd64
,这主要是历史原因。有兴趣可以自行搜索了解一下。
添加 Python 到 PATH
开始安装
几乎 所有的 Python 安装教程都会强调,勾选 Add Python to PATH
的选项,但是问题来了:
这个选项既然如此重要,为什么安装包不把它作为默认勾选状态呢?
细心点的小伙伴还会注意到,在它上面还有个选项: Install launcher for all users(recommended)
不但有默认勾选的待遇,而且还括弧,推荐。生怕你不选它。
这个所谓的 launcher
是何方神圣,为啥优先级又比 PATH
高呢?
为什么要默认安装 launcher
PATH
的作用
首先环境变量 PATH
的值是一堆路径的列表,因为环境变量的值只支持字符串,所有使用分号(;
)连接字符串的形式。
Windows 10 的体验不错,提供了对话框式的列表操作。 Windows 7 还需要编辑整个字符串
当我们在命令行中敲命令的时候,操作系统就是去这些路径下搜索有没有可执行程序能对得上号。只要找到了,就执行;没找到,就报错。
找的时候是从前往后按顺序的,一旦找到,后面就不继续找了。
因此,为了能让命令行找到 python
,必须要把 Python 的安装路径也加入到 PATH
变量中,这一点毫无疑问。
问题在于 Python 并不是永远只安装一个。有些时候我们必须安装多个 Python 版本。
多 Python 版本并存的痛点
比如说,虽然今天我们安装了最新的 Python 3.8 版本,但是可能我需要用到的某个软件还没支持这么新,甚至有的企业里的软件可能还只支持 Python 2.7。
安装多个 Python 版本,只要安装到不同的目录,它们彼此是不会产生什么冲突的,但是加入到 PATH
的待遇却只有一个能享受。那么其它没加入到 PATH
中的 Python 就变得使用没那么方便了。
在 Linux
系统中,这个很好解决,而在 Windows
系统下就比较麻烦,所以这才有了 launcher
,也就是 Python 启动器 这么个东西。
Python 启动器也是个程序,py.exe
,直接在命令行中敲 py
就能调用。它能够方便地管理所有安装过的 Python 版本,轻松启动不同版本的 Python 解释器,不管其有没有加入到 PATH
中。
偷懒的人勾选完 Add Python to PATH
就可以直接点击 Install now
开始安装了。出于介绍的目的,或者你想把 Python 安装到自定义目录,可以选择 自定义安装(Customize installation)
。
其它选项
自定义安装有 2 个对话框选择,第一个默认都是勾选上的,每个选项是啥意思介绍如下:
- Documentation 离线的
.chm
格式文档,必须保留。英文还OK
的小伙伴可以直接看这份文档,比所有书都靠谱。看英文有压力的,平时随时查查标准库模块用法什么的是极好的。 - pip Python 包下载工具,必须保留。(想找虐的随意)
- tcl/tk and IDLE ,说来话长,保留就对了。
- Python test suite,这个可以没有,当然留下来也没关系。
- py launcher,前面介绍过了。这里额外注意的是
for all user
选项,可以选择是否对所有用户安装。如果对所有用户安装,则需要administrator
的权限。
第 2 个对话框是高级选项:
- Install for all user,是否对所有人安装,如果是,需要
administrator
的权限,并且安装路径会有所不同。 - 关联文件到 Python,这个保持原样即可。它就是把
.py
文件和python
程序关联起来,这样双击.py
文件的时候,自动就用python
去执行了。 - 创建快捷方式,保持原样即可。
- 添加 Python 到环境变量,第 2 次修改的机会
- 预编译标准库,一次性的把标准库的
.py
都预编译成.pyc
,没什么必要,会多花费安装时间,不选 - 两个 download debug xxx ,不知道哪里会用到,都不选
最下面是指定安装路径,个人意见,保持默认即可。如果取消勾选为所有人安装,则默认安装的路径会比较深,这个看上去有点不舒服,但是绝大多数情况下我们都不会直接造访该目录,所以不会有什么影响。
我个人的推荐操作是 不选择对所有用户安装,这样如果想使用多个用户,每个用户有自己选择的自由。
安装后的基本测试
安装完成后,新打开一个命令行窗口,win
+ r
,然后输入 cmd
:
注意,在安装 Python 前已打开的命令行不会自动更新环境变量。
依次执行下面的命令:
# 注意,-0 后面是数字 0,不是字母 o
py -0
或者
py --list
这就是调用 Python 启动器,它显示出系统中已安装的 Python 版本。
python --version
这是直接调用 Python 解释器,打印出它的版本。
pip --version
这是调用 pip
,打印出它的版本。
为什么要测试这 3 个命令,因为它们分别安装在了不同的位置,都工作正常了,就证明安装没有问题了。
想要了解更多细节,我们来查看 PATH
环境变量。
安装后的 PATH
变化
因为没有选择为所有用户安装,所以环境变量看当前用户的:
安装时的选择不同,这里环境变量出现的位置也会有所不同
上面 3 条就是安装后自动添加的。
注意,如果
launcher
没有取消勾选for all user
,则会默认安装在系统目录下,就不需要添加到PATH
,这里就只有 2 条新增。
安装目录详情
先来看 C:\Users\Davy\AppData\Local\Programs\Python\Python38
,也就是 Python 的安装路径,它是包含 python.exe
的目录。
其它目录的作用:
- DLLs,静态链接库,里面是一些
.dll
和.pyd
文件,一般不会直接和这个目录打交道 - Doc,文档,里面就是一个
python381.chm
,快捷方式里包含了该文档路径,所以平常不会直接访问 - include,头文件,基本上不会用到
- Lib,这个目录最最重要,几乎所有的标准库源码都在这里面了,大部分平常都不会去动它们,除了其中一个子目录:
- site-packages 后续安装的第三方模块和包都会出现在这里,所以偶尔出现问题,我们会造访这里。
- libs,几乎不会直接用到,注意和
Lib
区分开。(因为 Windows 系统路径不区分大小写,所以 Lib 实际会展示成 lib ) - Scripts,后续安装的第三方包如果提供了命令,可执行文件就会出现在这里。例如
pip.exe
就是在此目录下,而 Lib 目录下保存的是 pip 的源码。 - tcl,仍然是说来话长,略过
- Tools,自带的一些 Python 脚本,包括一些
demo
,其中有些可以作为学习参考。
最后看 launcher
的目录,它要管理所有的 Python 版本,所以它是超脱在外的,安装在了 Python38 的上级目录中。
启动菜单详情
安装 Python 后在开始菜单会多出来 4 个快捷方式,一般很少用,做一个简单的介绍:
- IDLE (Python 3.8 64-bit),用来启动 IDLE ,以后再详细介绍它。
- Python 3.8 Module Docs (64-bit),点击会自动启动一个本地 web 服务,然后自动打开包含模块文档的网页,样式非常古老,而且其中的内容都包含在下面的文档文件中了,所以基本没人会用这个。
- Python 3.8 Manuals (64-bit),点击打开文档
- Python 3.8 (64-bit),点击用来启动 Python 解释器。用这种方法启动解释器,退出后就整个黑窗口都消失了,打印的信息也都看不到了,所以我们一般是先启动命令行,再从命令行内启动 Python,这样即使解释器退出了,也能看到刚才程序执行的结果。
小结
本文详细解释了 Python 安装过程中的注意事项,并且详细介绍了安装后的各个文件夹作用,以及增加的 3 个命令。
如果本文对你有帮助,请 点赞、分享、关注,谢谢!
Windows 系统安装 Python 3.8 详解的更多相关文章
- jenkins手把手教你从入门到放弃02-jenkins在Windows系统安装与配置(详解)
简介 上一篇对jenkins有了大致了解之后,那么我们就开始来安装一下jenkins. Jenkins安装 一.安装Java环境 1.你需要做的第一件事情就是在你的机器上安装Java环境.Jenkin ...
- windows上安装Anaconda和python的教程详解
一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因 ...
- Python开发技术详解PDF
Python开发技术详解(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1F5J9mFfHKgwhkC5KuPd0Pw 提取码:xxy3 复制这段内容后打开百度网盘手 ...
- Python环境搭建详解(Window平台)
前言 Python,是一种面向对象的解释型计算机程序设计语言,是纯粹的自由软件,Python语法简洁清晰,特色是强制用空白符作为语句缩进,具有丰富和强大的库,它常被称为胶水语言. Python是一种解 ...
- (转)python collections模块详解
python collections模块详解 原文:http://www.cnblogs.com/dahu-daqing/p/7040490.html 1.模块简介 collections包含了一些特 ...
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- python之struct详解
python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
随机推荐
- Ubuntu常用命令大全 以及 PHP+MySQL代码部署在Linux(Ubuntu)上注意事项
PHP+MySQL代码部署在Linux(Ubuntu)上注意事项 https://cloud.tencent.com/developer/article/1024187 Ubuntu常用命令大全 ht ...
- git之github解决冲突
1.先创建一个txt文件,并进行编辑 2.然后推送到github,过程看之前的教程. 3.在另一个文件夹拉取(用小乌龟拉取),分别在克隆文件夹和原本文件夹操作test.txt. 4.把本体推送给服务器 ...
- 0011 开发者工具(chrome)
此工具是我们的必备工具,以后代码出了问题 我们首先第一反应就是: "按F12"或者是 "shift+ctrl+i" 打开 开发者工具. 菜单: 右击网页空白出- ...
- 001 Ceph简介
一.Ceph简介 Red Hat Ceph是一个分布式的数据对象存储,系统设计旨在性能.可靠性和可扩展性上能够提供优秀的存储服务.Ceph分布式存储能够在一个统一的系统中同时提供了对象.块.和文件存储 ...
- POJ3252 Round Numbers 题解 数位DP
题目大意: 求区间 \([x,y]\) 范围内有多少数的二进制表示中的'0'的个数 \(\ge\) '1'的个数. 解题思路: 使用 数位DP 解决这个问题. 我们设状态 f[pos][num0][n ...
- 原生js获取下拉框下标
// 获取下拉框所选下标 传入下拉框的id function getselectscheckitemindex (idStr) { let o = document.getElementById(id ...
- docker-网络驱动
网络驱动程序 Docker的网络子系统是可插拔的,使用驱动程序.默认情况下存在多个驱动程序,并提供核心网络功能: bridge:默认网络驱动程序.如果未指定驱动程序,则这是要创建的网络类型.当的应用程 ...
- 异步-promise、async、await
下面代码打印结果是? setTimeout(()=>{ console.log(1) }) new Promise((resolve,reject)=>{ console.log(2) r ...
- 【Java基础总结】总结
总想着把学习的过程全都记录下来 以便某一时刻回头的时候,还能看见走过的路 对于基础来说,即使不回头看,也知道这条路是什么样子的 记录不记录,都无所谓 况且我不是专业的记录者,不记录比记录好 实在想不起 ...
- SpringBoot 2.x 开发案例之 Shiro 整合 Redis
前言 前段时间做了一个图床的小项目,安全框架使用的是Shiro.为了使用户7x24小时访问,决定把项目由单机升级为集群部署架构.但是安全框架shiro只有单机存储的SessionDao,尽管Shrio ...