Python 虚拟环境的使用

1,052 阅读5分钟

了解虚拟环境

如果在一台机器上,想开发多个不同的项目,需要用到同一个包的不同版本,如果还使用上面的命令,在同一个目录下安装或者更新,其它的项目必须就无法运行了,怎么办呢?

解决方案:虚拟环境

那么什么是虚拟环境呢?

虚拟环境其实就是对真实 python 环境的复制,这样我们在复制的 python 环境中安装包就不会影响到真实的python环境。通过建立多个虚拟环境,在不同的虚拟环境中开发项目就实现了项目之间的隔离。


虚拟环境库的安装

我们这里使用 旧virtualenvconda 来创建虚拟环境。

pip 默认的源安装第三库会有点慢,可以配置一下其他的镜像源。

参考文章 -> Pip安装第三方库网速慢(解决方案)


conda 管理(推荐)

使用 conda 管理虚拟环境非常好用,conda 工具可以安装 Miniconda 或 Anaconda 软件

Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda install command to install 720+ additional conda packages from the Anaconda repository.

Miniconda 是 conda 的免费最小安装程序。它是 Anaconda 的一个小型引导版本,仅​​包含 conda、Python、它们所依赖的包以及少量其他有用的包,包括 pip、zlib 等。使用 conda install 命令从 Anaconda 存储库安装 720 多个附加 conda 包。

这里贴下官网的介绍,我就不详细介绍安装流程了,大家自行摸索。 docs.conda.io/en/latest/m…

常用命令

命令作用
conda create -n myenv python=3.6创建名为myenv的Python 3.6环境
conda activate myenv激活myenv环境
conda deactivate退出当前环境
conda env list显示所有环境列表
conda list显示当前环境下已安装的包
conda install pkgname在当前环境下安装pkgname包
conda remove pkgname在当前环境下删除pkgname包
conda update pkgname在当前环境下更新pkgname包到最新版本
conda env remove -n myenv删除名为myenv的环境
conda config --add channels https://repo添加repo为conda的channel
conda config --set chan_priority strict设置只搜索priority channels而不使用default channels
conda clean --all删除所有tar包和缓存
conda info显示conda的版本和环境信息

配置清华镜像源

# 配置清华TUN镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

# 配置清华TUN主镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

# 配置清华TUN conda-forge镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

# 配置清华TUN msys2镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

配置成国内的镜像源,conda install 可以加速下载以及减少网络错误。

pycharm 使用 conda 管理 python环境

image.png

pycharm 右下角点击 Add New Interpreter 或 Interpreter Settings 就可以管理 python 环境了,很方便

image.png

打开终端就可以看见终端命令行前面带上虚拟环境名称说明就已经激活了

image.png

如果Windows中没有可以尝试将默认的终端切其他的终端,例如换成 CMD 看看。

Windows上安装

cmd 窗口查看系统是否安装了 virtualenv

virtualenv --version

pip 安装 virtualenv

pip3 install virtualenv
pip3 install virtualenvwrapper-win

virtualenvwrapper-win 虚拟环境扩展包(指令便捷)


虚拟环境创建

cmd窗口 下创建 python3 虚拟环境 py_django

mkvirtualenv -p python3 py_django

cmd创建虚拟环境


注意:

Windows 创建的虚拟环境默认在 C:\Users\Administrator\Envs , Administrator 代表我当前电脑使用的用户你们的可能在其他用户下,如需指定创建的虚拟环境的存放的路径,可以在电脑的系统环境变量中添加 WORKON_HOME 系统变量

设置环境变量 - 指定虚拟环境存放的路径


Linux上安装

安装虚拟环境

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

需保证 Linux 上有 Python3 的环境。


安装完虚拟环境后输入如下指令测试

mkvirtualenv test

如果提示找不到 mkvirtualenv 命令,须配置环境变量

# 1、创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs

# 2、打开~/.bashrc文件
vim ~/.bashrc

# 2.1 添加如下两行
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

# 3、运行
source ~/.bashrc

WORKON_HOME 存放虚拟环境目录位置可以自己单独设置。


创建虚拟环境

mkvirtualenv py_flask

进入虚拟环境

workon py_flask

退出虚拟环境

如果所在环境为真实环境,会提示 deactivate:未找到命令

deactivate py_flask

虚拟环境指令

Windows 和 Linux 平台上的指令都一致。

指令举例作用
mkvirtualenvmkvirtualenv -p python3 虚拟环境名称创建虚拟环境
deactivatedeactivate退出虚拟环境
workonworkon查看虚拟环境
workonworkon 虚拟环境名称使用虚拟环境
rmvirtualenvrmvirtualenv 虚拟环境名称删除虚拟环境

注意:

先退出:deactivate
再删除:rmvirtualenv 虚拟环境名称

虚拟环境总结

一、使用虚拟环境不会让主解释器好多库乱

二、例如在单独的虚拟环境下安装 Flask,就知道在后续开发中所使用的所有库,用 pip freeze 命令就知道你的项目需要什么环境,而在主解释器有好多项目没用到的库。使用虚拟环境到部署到服务器上则方便环境配置,不需要一个一个筛选所需库。

在虚拟环境中利用

  • pip freeze 查看项目所需库环境。
  • pip freeze > requirements.txt 导出项目所需库信息。
  • pip install -r requirements.tx 批量安装项目所需库。

三、在同一台机器上开发多个项目,而遇到项目所需同一库的版本不一致。因此使用虚拟环境让每个项目独立隔离出来,可以单独使用不同版本库。


公众号

新建文件夹X

大自然用数百亿年创造出我们现实世界,而程序员用几百年创造出一个完全不同的虚拟世界。我们用键盘敲出一砖一瓦,用大脑构建一切。人们把1000视为权威,我们反其道行之,捍卫1024的地位。我们不是键盘侠,我们只是平凡世界中不凡的缔造者 。