Python Windows 上 3.x 多版本共存笔记
Table of Contents
1 基本配置
安装 Python 之后会顺带安装一个 python launcher 。
C:\Program Files\python37 和 C:\Program Files\python38 是两个 Python 的安装目录。
执行 python -V
的输出取决于环境变量的顺序。
执行 py -3.7
和 py -3.8
可以指定 Python 版本。
执行 py -3.7 -m
可以把 Python 的库模块当作脚本来执行,比如:
py -3.7 -m pip install virtualenv
用 pip 安装virtualenv
py -3.7 -m virtualenv --python=3.8 <virtual_env_name>
创建虚拟环境
注意:
- 安装完
virtualenv
之后不能在 PowerShell 里面直接使用virualenv
命令。 - 想要直接使用命令需要添加环境变量
C:\Users\mgz\AppData\Roaming\Python\Python37\Scripts
到Path
。 - 添加完环境变量后,virtualenv 基于的 Python 版本取决于 Python 安装目录在环境变量里的顺序。
C:\Users\mgz\AppData\Roaming\Python\Python37\Scripts 和 C:\Users\mgz\AppData\Roaming\Python\Python37\Scripts 是 Python 包启动脚本的所在目录。
2 踩坑记录
2.1 PowerShell 默认不允许执行 *.ps1 脚本文件
需要更改 PowerShell 的执行策略 Set-ExecutionPolicy RemoteSigned
。
Set-ExecutionPolicy <Policy>
中 <Policy>
的有效参数:
Restricted
: 是默认选项。不载入任何配置文件,不运行任何脚本。AllSigned
: 只有被 Trusted publisher 签名的脚本或者配置文件才能使用,包括在本地写的脚本。RemoteSigned
: 对于从网络上下载的脚本或者配置文件,只有被 Trusted publisher 签名的才能使用。Unrestricted
: 可以载入所有配置文件,可以运行所有脚本文件. 如果运行一个从网络下载并且没有签名的脚本,在运行之前,会被提示需要一定的权限。Bypass
: 所有东西都可以使用,并且没有提示和警告。Undefined
: 删除当前 scope 被赋予的 ExecutionPolicy,但是 Group Policy scope 的 Execution Policy 不会被删除。