如何安装并使用Python虚拟环境

有两种虚拟环境可选,即virtualenvconda。我的系统是Windows 10 x64。

virtualenv

安装

使用pip安装即可。

pip install virtualenv

创建虚拟环境

virtualenv VENVNAME

--no-site-packages参数能使virtualenv不会把主环境中已安装的包复制到新创建的虚拟环境中,但这早已成为virtualenv的默认设置,因此无需添加。

激活虚拟环境

与Linux不同,Windows没有source命令,直接输入路径即可。

.\your_env_dir\Scripts\activate

注意前面加上了.\让Powershell执行文件,否则会报错找不到文件。如果不想每次输入.\,可以在管理员Powershell中执行以下命令:

Set-ExecutionPolicy RemoteSigned

看到路径前面出现括号,就说明成功了。

退出虚拟环境

deactivate

分析

virtualenv的原理是把系统Python和pip复制一份到虚拟环境目录,并临时把环境变量设为虚拟环境目录中的。这样在虚拟环境中安装的软件包都会在该目录内。virtualenv的作用效果是局部的。

但是这样还是新版的Python,新版Python(3.7及更新)与tensorflow 1.12不兼容。虽说也可以手动下载替换虚拟环境中的Python,但还是不太方便,所以最终我选择了大名鼎鼎的Python软件包管理器Anaconda3。

Anaconda3

安装

直接去Anaconda官网下载Windows安装程序即可,注意安装时有两个复选框,分别是添加Anaconda到PATH和将Anaconda Python 3.8设为默认Python,一定要勾上。

创建虚拟环境

Anaconda可以在创建虚拟环境时指定Python版本,这里我设为了Python 3.8.6。和virtualenv不同,Anaconda创建的虚拟环境在Anaconda安装目录下,因此不必先cd到心怡的目录。

conda create -n VENVNAME python=3.8.6

但是由于Anaconda的服务器在海外,速度非常慢。因此我们需要先修改它的网络配置,添加清华大学的镜像源,有需要时可以配置代理。用Notepad ++(记事本也可以,将notepad++替换为notepad。但是notepad++真滴好用,强烈推荐。)打开配置文件:

start notepad++ 'C:\Users\YOUR_CURRENT_USERNAME\.condarc'

将其内容修改为:

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true
proxy_servers:
    http: http://pro.xya.ddr.ess:port
    https: http://pro.xya.ddr.ess:port
ssl_verify: false

这样速度会快一些,但在我这儿还是只有1-2Mbps的速度QAQ

查看虚拟环境

执行以下命令可以查看可用的虚拟环境

conda env list

激活虚拟环境

按理说执行这个命令就可以了,但是我执行后,啥反应也没有,没报错,但提示符前面也没出现代表虚拟环境的小括号。

conda activate VENV_NAME

这种情况花了我大量时间排查原因。最终是这么解决的:

安装模块以使conda虚拟环境支持Powershell,虽然按理说我用的4.9版本已经原生支持了。

conda install -n root -c pscondaenvs pscondaenvs

更改Powershell配置,管理员Powershell运行:

Set-ExecutionPolicy RemoteSigned

再运行

conda activate VENV_NAME

就可以成功进入虚拟环境。虽说如此,有如下信息出现:

警告: You are using conda 4.9.2, which has built-in support for PowerShell.
警告: This script may stop working with conda versions newer than 4.6
警告: For more info on how to set up PowerShell for conda, run 'conda init --help'
WARNING: The conda.cli.activate module is deprecated and will be removed in a future release.
WARNING: The module conda.cli.activate is deprecated. It will be removed in a future feature release (i.e. minor version release).
WARNING: The conda.cli.activate module is deprecated and will be removed in a future release.
WARNING: The module conda.cli.activate is deprecated. It will be removed in a future feature release (i.e. minor version release).

说明这可能不是长久之计。Anyway,至少现在能用了。

只需在Powershell中执行如下命令,

conda init powershell

再重启Powershell,就能正常使用conda activate。(我TM……为啥不在安装的时候就做好???)

比如:

conda activate venv
conda deactivate #不需要指定名称

Enjoy!

终于可以愉快地使用虚拟环境了!

评论

此博客中的热门博文

搭建你自己的“云游戏”

标点论

SSH可以做任何事情!