一. 虚拟环境概览

1. 什么是虚拟环境

举个生栗子🌰:
李华有两台笔记本,工作室一台笔记本A,家里一台笔记本B(笔记本以下统称电脑)
电脑A里装了很多电脑B里没有的软件,电脑B装的都是比较低版本的软件
工作室里有很多家中没有的设备和工具,是完成工作必不可少的部分

上下班在工作室使用电脑A办公,处在 <工作室> 虚拟环境中,编译器为interpreter A
因为疫情原因在家使用电脑B办公,处在<家>虚拟环境中,编译器为interpreter B
①李华在<工作室>能利用电脑A及工作室的设备完成任务,同样的任务在<家>中却完成不了
②李华在<家>中设备较老旧,工作室全盘上了type-c接口而家中却还在使用micro-usb接口,
导致李华在将家中设备迁移到工作室后无法使用,将工作室的电脑搬回至家中同样不可使用
③好不容易处理好了环境间的适配问题,李华发现自己的编译器interpreter B版本太旧,导致在工作室生成的文件处理不了,弄不好还得回家中继续完成任务。这样极大的降低了工作的效率,同样的,在家中通过编译器interpreter A生成的文件,还是打不开,又需要回到编译器原来所在的位置继续处理

当将两个工作环境明确的分开时,工作效率能大幅提升,这个工作环境就类比于虚拟环境,同样的,哪天你换个地方重新开始一个新的项目时,你也需要重新创建一个新的虚拟环境来进行工作

如上举例可能还不是很清晰
可以多看看别的博主对虚拟环境的解释

2. 虚拟环境有什么用

虚拟环境的作用:
①将工作区与其他工作区区分开来,相互不影响,大大提高开发的速度
②不同工作区的编译器以及包版本各有不同,如果不创建虚拟环境而直接将包全部添加到编译器环境中,开发时可能会出现各种包不兼容的情况,实际上在开发过程中很多包框架都是固定的,版本对应关系很大。
比如pyqt5-tools目前就只支持到3.9的python编译器,而你不知道怎么就是3.10的版本了,这时候你只是为了开发这个项目,与其重新创建编译器不如直接创建一个虚拟环境,就好比你在工作室直接买了一个不可移动的台式电脑(注意是不可移动,别跟我说你抬着个台式上下班),创建一个虚拟环境,在该虚拟环境中直接装载python3.9以及相关绑定的所有包就可以了,而当你开发完,虚拟环境不再需要时,你可以直接删除虚拟环境所在的位置而连带将其之前装在的所有包一并清除而不会影响到你在其他位置安装的任何包。

工作室负责人带着工作室所有的设备跑路了,而你在家中的设备一份没少,你还不至于很伤心

③虽然开发依赖虚拟环境的必要性,但有的时候也不一定完全合适。比如创建虚拟环境需要的内存量还是比较大的,在没注意好虚拟环境的安装地址时,容易让内存盘见底。

总的来讲你可以这么理解
你在电脑上使用的软件也就是一个完整的虚拟环境
软件里包含了要使用的所有包和各种文件
这样你在使用该软件的时候就不会与其他软件出现干扰。

3. 常用虚拟环境包管理工具

①conda
②Virtualenv
③Pipenv
④Poetry
⑤python_vene

我所知道的、常用的
就这么多(‾◡◝)
而其中基本命令都可以由命令终端来控制
(所以,学好命令终端很重要)
在底下有相关的函数库可以索引
根据你想知道的包内容索引源文件即可

二 .如何配置虚拟环境

1. 使用pycharm配置虚拟环境

以下几种是pycharm上出现的可选选项框,根据需要选择不同的创建环境的方式,不过只是创建个环境,只要能够成功创建即可,不需要全部掌握
pycharm
以上是常见的四种pycharm创建虚拟环境的方式
什么,你说有五种?
翻译翻译什么叫
System interpreter
“添加系统编译器”

打开该界面有两种方式
一种是右下角python interpreter点击进入
点击右方小齿轮
出现addshow all都可以点击
点击add直接出现配置界面
点击show all后再点击左上角加号进入配置界面
pycharm_01
show all
另一种是
file->setting->project->python interpreter->Alt+insert


(1)Virtualenv Environment

Virtualenv Environment

  1. New environment:
    location是指你创建环境的位置
    base interpreter是指创建所使用的编译器,因为使用包创建,所以就不再需要独立安装编译器了
    下面有两个选项

Ⅰ. inherit global site_packages:继承全局站点包
勾选表示你可以继承全局函数包放到该环境使用
不勾选,在你创建的环境中就只包含编译器和编译器附带的几个基本包
(建议勾选)

Ⅱ. make available to all project:使项目全局可用
勾选表示你创建的该虚拟环境在安装其他包的时候会同步安装在全局
不勾选,在你创建的环境中的包就与全局分割开
(不建议勾选)

对全局不太理解的话
我还是举个熟栗子🌰:
创建完虚拟环境前,勾选Ⅰ,你之前安装在非虚拟环境处的包就都能用了。如果没有勾选,很多包在你这环境底下是没有的
创建完虚拟环境后,勾选Ⅱ,你之后安装在该虚拟环境下的包就会出现在你安装其他包的下面,有时候你只是简单的输入些东西而不需要创建虚拟环境,这时候你的编译器底下就会出现你之前安装的所有包。

  1. Existing environment:
    interpreter一般情况下,这里的interpreter指的是你python.exe所在的位置
    如果你直接从文件中打开,pycharm会自动索引编译器所在的位置。
    注意要将编译器和基编译器区分开来
    如果你已经创建好了虚拟环境,就点击Existing environment来配置该环境编译器即可

(2)Conda Environment

该工具包是随着conda绑定在pycharm上的
conda又是跟随anaconda下载下来的
一般情况下,anaconda安装完成,conda也同时安装完成
如果你没有下载anaconda又想使用conda且又不想下载anaconda
可以指接从python官方函数库或者conda官网上下载conda并初始化使用

好了回到pycharm界面
conda
conda和Virtualenv很相近

  1. New environment:
    location是指你创建环境的位置
    base interpreter是指创建所使用的编译器,因为使用包创建,所以就不再需要独立安装编译器了
    Conda executable相比于Virtualenv所不同,是指索引调用conda包的位置
    可以使用命令查看conda包位置:
where conda

其中显示如下信息

C:\Users\Asus\anaconda3\condabin\conda.bat
C:\Users\Asus\anaconda3\Scripts\conda.exe

其中第二行即为conda所在位置
不过一般pycharm会自动索引conda位置,当存在Conda Environment时说明已经绑定成功了,只要conda已添加至环境变量一般都能索引出来

  1. Existing environment:
    interpreter一般情况下,这里的interpreter指的是你python.exe所在的位置
    如果你直接从文件中打开,pycharm会自动索引编译器所在的位置。
    Conda executable相比于Virtualenv所不同,是指索引调用conda包的位置

注意(3)(4)下创建的虚拟环境储存在该包默认路径下

(3)Pipenv Environment

和其他包一样,出现索引路径位置
正常情况下安装上Pipenv会自动索引位置
否则需要查看Pipenv所在位置并输入绝对路径
Pipenv
Pipenv的界面就简单很多了
出现选项:从pipfile安装软件包
默认勾选,方便管理依赖包


(4)Poetry Environment

和Pipenv包一样,出现索引路径位置
正常情况下安装上Poetry会自动索引位置
否则需要查看Poetry所在位置并输入绝对路径Poetry


2. python自带vene创建虚拟环境

vene函数库命令
该部分需要你先在全局环境中安装好python并添加至环境变量中
然后调用vene的函数库,这里vene函数库命令注释写的很全,对于过程的配置已经非常完善了,直接参考函数库文献即可。

3. 使用Anaconda Navigator配置虚拟环境

在安装完Anaconda后,附带生成Anaconda Navigator
使用Anaconda Navigator可以非常方便的创建虚拟环境并添加各种各样的包
超级方便简洁可以说是
打开Anaconda Navigator界面
这界面可以说是超级清新洒脱✎~~~✐
在这里插入图片描述
选择Environment可以查看到当前生成的所有虚拟环境以及基环境
base(root)代表基环境,而底下五个可选选项分别代表着

Create创建新环境
Clone克隆已有环境
Import导入新环境(环境迁移)
这里注意导入的不是库,导入的是环境
Backup上传环境
Remove删除环境

  1. create:
    create
    这里选择python,当然如果你是数学研究工作者对底下的R语言应该并不陌生,不管你陌不陌生,反正我很陌生( ´_ゝ`)✎
    R语言官方网站

  2. clone:
    clone
    输入新环境的名称

  3. Import:
    Import
    上键从本地文件导入
    下键从账户文件导入
    填写新环境名称时根据需要选择是否覆盖原有环境的名称

  4. Backup:
    Backup
    上键(上传)保存到本地位置
    下键上传到账户文件
    填写新环境名称时根据需要选择是否覆盖原有环境的名称

  5. Remove:
    Remove
    选择需要删除的虚拟环境进行删除
    删除请深思,一旦删除无法还原

4. 使用cmd.exe配置虚拟环境

命令终端控制创建虚拟环境有两种主流方式
此处针对windows:

1. 一种是全局状态下直接调用cmd命令框:运行->cmd
2. 另一种是在固定路径下调用cmd命令框:
在你需要创建虚拟环境的文件夹下输入cmd打开命令框


如下图:
1.
cmd.exe
这界面不会还有人陌生吧|・ω・`)

2.test_01
在路径处
test_01
覆盖输入cmd
test_01
弹出cmd命令窗口

你可能要问,两者有什么区别呢?
第一个创建虚拟环境指向默认路径
第二个创建虚拟环境指向当前路径


在以下各库底下附有两个网址
⇑表示其官网或官方文档
⇓表示其python的函数库索引
想全面了解的可以直接索引上述网址

你不会只是想创建个虚拟环境就走了吧ʅ(‾◡◝)

(1)conda

Conda英文官方文档
Conda函数库索引
conda是目前最主流的虚拟环境库安装包(可能有之一٩(͡๏̯͡๏)۶)
所以以下部分会讲的稍微比较详细,其他包的执行过程比较相近

如果你想了解全部命令函数
参考如下命令输出
conda命令文档:

conda

直接输入该包的名称
其中包括五个部分

  1. usage:用法
  2. Options:选项
  3. positional arguments:位置参数
  4. optional arguments:可选参数
  5. conda commands available from other packages
    其他包中可用的 conda 命令
Microsoft Windows [版本 10.0.22000.556]
(c) Microsoft Corporation。保留所有权利。


C:\Users\Asus>conda
usage: conda-script.py [-h] [-V] command ...

conda is a tool for managing and deploying applications, environments and packages.

Options:

positional arguments:
  command
    clean        Remove unused packages and caches.
    compare      Compare packages between conda environments.
    config       Modify configuration values in .condarc. This is modeled after the git config command. Writes to the
                 user .condarc file (C:\Users\Asus\.condarc) by default.
    create       Create a new conda environment from a list of specified packages.
    help         Displays a list of available conda commands and their help strings.
    info         Display information about current conda install.
    init         Initialize conda for shell interaction. [Experimental]
    install      Installs a list of packages into a specified conda environment.
    list         List linked packages in a conda environment.
    package      Low-level conda package utility. (EXPERIMENTAL)
    remove       Remove a list of packages from a specified conda environment.
    uninstall    Alias for conda remove.
    run          Run an executable in a conda environment. [Experimental]
    search       Search for packages and display associated information. The input is a MatchSpec, a query language
                 for conda packages. See examples below.
    update       Updates conda packages to the latest compatible version.
    upgrade      Alias for conda update.

optional arguments:
  -h, --help     Show this help message and exit.
  -V, --version  Show the conda version number and exit.

conda commands available from other packages:
  build
  content-trust
  convert
  debug
  develop
  env
  index
  inspect
  metapackage
  pack
  render
  repo
  server
  skeleton
  token
  verify

C:\Users\Asus>

命令部分
谷歌翻译如下:

    clean 删除未使用的包和缓存。
    compare conda 环境之间的包比较。
    config 修改 .condarc 中的配置值。这是在 git config 命令之后建模的。默认写入user.condarc 文件 (C:\Users\Asus\.condarc)。
    create 从指定包的列表中创建一个新的 conda 环境。
    help 显示可用 conda 命令及其帮助字符串的列表。
    info 显示有关当前 conda 安装的信息。
    init 为 shell 交互初始化 conda。 [实验]
    install 将软件包列表安装到指定的 conda 环境中。
    list 列出 conda 环境中的链接包。
    package 低级 conda 包实用程序。 (实验性)
    remove 从指定的 conda 环境中删除软件包列表。
    uninstall conda remove 的别名。
    run 在 conda 环境中运行可执行文件。 [实验]
    search 搜索包并显示相关信息。输入是 MatchSpec,一种查询语言
                 对于 conda 包。请参阅下面的示例。
    update 将 conda 包更新到最新的兼容版本。
    upgrade conda 更新的别名。

在使用前先确定好conda是否安装成功
两种命令都可以用来查看conda版本
②查看conda版本:

conda --version
conda -V

conda --version conda -V
确定conda安装完成且可用后
③创建虚拟环境:

conda create -n <vene_name> python==<version>

<vene_name>指的是你自定义虚拟环境的名称
<version>指的是虚拟环境安装python包的版本
例如:

conda create -n xintu python==3.8.5

表示创建虚拟环境的名称为xintu
安装的python环境包为3.8.5的版本

注意:你此时创建的虚拟环境为默认路径,装载在conda所在的一个子目录下,不方便你查找该虚拟环境、不方便编辑且可能偷偷占用大量内存
你安装虚拟环境的过程时输出命令包含了你当前安装的虚拟环境的位置

## Package Plan ##

  environment location: C:\Users\Asus\anaconda3\envs\xintu

  added / updated specs:
    - python==3.8.5

如果你不小心关掉了命令行
对于你默认虚拟环境的位置
可以使用信息查找命令

④信息查找:

conda info

输出信息中含有

envs directories : C:\Users\Asus\anaconda3\envs
                   C:\Users\Asus\.conda\envs
                   C:\Users\Asus\AppData\Local\conda\conda\envs

当然,这一命令里还包含了很多其他查看conda的信息
这是我存盘下对应的虚拟环境所在路径
如果需要修改默认路径,只需要修改envs_dirs配置的路径

由刚刚输出的位置可以看出,在默认情况下
虚拟环境的输出路径是三个中指向第一个位置的路径

⑤修改默认路径:
(包含添加和删除)

添加路径

conda config --add envs_dirs <绝对路径>

删除路径

conda config --remove envs_dirs <绝对路径>

-此处引用博主s534435877-Anaconda 修改默认虚拟环境安装位置
https://blog.csdn.net/s534435877/article/details/107655020
也有非命令方法修改默认路径的需要去修改虚拟环境的配置文件
此处不再赘述

设置完路径后再重新创建虚拟环境即可
创建完环境后环境并不能被直接打开,这时你的虚拟环境还没激活
需要激活你的虚拟环境后才能添加进pycharm或vscode等IDE中

⑥激活虚拟环境:

conda activate <vene_name>

激活完虚拟环境就可以愉快的通过pycharm打开该环境进行编辑了
不会用pycharm打开?
( ̄ε(# ̄)☆╰╮o( ̄皿 ̄///)
那你怎么会接触到的虚拟环境?
抽!!( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

右键虚拟环境所在的文件夹
出现选项通过pycharm打开
open folder as pycharm…
可以观察到右下角已经出现了虚拟环境的配置

pycharm
如果你使用的是第二种方式(固定路径状态下)的cmd命令终端,就不需要考虑生成的环境路径问题,该路径已经固定到该文件下,环境路径同样生成在文件路径下


(2)Virtualenv

Virtualenv英文官方文档
Virtualenv函数库索引
可以使用pycharm创建虚拟环境
说明已经导入了Virtualenv库,但是当在cmd中输入Virtualenv
却显示未知命令,可能没有将该库添加到环境变量中
(我的猜测,并没有实际测试过)
不然就重新安装Virtualenv库到指定路径后引用

①安装可以使用pip或IDE安装:

pip install virtualenv

②查看virtualenv信息

Virtualenv

这里显示了Virtualenv的全部用法

usage: virtualenv [--version] [--with-traceback] [-v | -q] [--read-only-app-data] [--app-data APP_DATA] [--reset-app-data] [--upgrade-embed-wheels] [--discovery {builtin}] [-p py] [--try-first-with py_exe]
                  [--creator {builtin,cpython3-win,venv}] [--seeder {app-data,pip}] [--no-seed] [--activators comma_sep_list] [--clear] [--no-vcs-ignore] [--system-site-packages] [--copies] [--no-download | --download]
                  [--extra-search-dir d [d ...]] [--pip version] [--setuptools version] [--wheel version] [--no-pip] [--no-setuptools] [--no-wheel] [--no-periodic-update] [--symlink-app-data] [--prompt prompt] [-h]

使用已有python环境包
③创建虚拟环境

virtualenv -p <本地python.exe的绝对路径> <vene_name>

依据activate.bat所在路径, 输入执行激活
④激活虚拟环境

<activate绝对路径>\activate.bat

或者直接找到该路径下activate.bat激活文件双击打开执行即可
接着用pycharm等IDE打开即可编辑

这里有其他博主对该库的专业分析:深入了解↓
https://www.cnblogs.com/lhm166/articles/12863468.html


以下由于笔者对(3)(4)所使用的管理包了解不多
引用其他博主对该库的解析以完善此两种方法下的安装


(3)Pipenv

Pipenv英文官方文档
Pipenv函数库索引

这里有其他博主对该库的专业分析:深入了解↓

  1. https://www.cnblogs.com/doublexi/p/15791048.html
  2. https://www.cnblogs.com/zingp/p/8525138.html

(4)Poetry

Poetry英文官方网站
Poetry官方函数库

这里有其他博主对该库的专业分析:深入了解↓

  1. https://cxymm.net/article/Python_xiaowu/122118496
  2. https://blog.csdn.net/mziing/article/details/123842731

5. 使用VS code配置虚拟环境

vscode笔者除了用用里面的插件和偶尔学习一下c语言程序设计,好像…emmm…还不怎么常用

在扩展上并没有找到与直接配置虚拟环境有关的插件
也没有直接应用几个库函数的接口
也就意味着,需要使用vscode调用命令终端控制包管理
确定在vscode中安装好python的插件后,剩下的部分和直接使用cmd.exe方式完全一样,除了…自定义终端界面
有谁不喜欢用自己的<attachment>当背景呢ᕕ( ᐛ )ᕗ

三. 配置环境过程常见错误

(1)CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.

在使用命令行控制conda激活虚拟环境时出现该错误

conda activate <vene_name>

说明你的conda没有进行初始化配置
需要对你的conda进行初始化配置

因为你使用的是cmd.exe终端
①初始化命令:

conda init cmd.exe

然后再次激活虚拟环境
②激活命令:

conda activate <vene_name>

这里的<vene_name>指的是你虚拟环境的名称
这时即可激活成功
激活成功后就可以将该环境添加到pycharm中进行编译了

(2)当使用pycharm创建虚拟环境过程中,出现Environment location directory is not empty

如图:

GUI_vene
这种情况其实很简单,就是你的文件夹非空
虚拟环境不能创建在非空文件夹下
不存在你创建了虚拟环境你的文件夹还是空的,少年
所以,要么清空文件夹重新创建,要么再生成一个新的文件夹再创建虚拟环境

(3)虚拟环境所在的文件夹路径位置更改后虚拟环境失效

这个问题其实很多和我一样刚入手python的朋友经常遇到但却束手无策

其实他的原理很简单,不过就是编译器的位置在索引的时候失效罢了,原位置失效了,可以重新索引,即有Existing environment用于重新索引编译器

不删除该虚拟环境,需要继续在该环境中工作,但是编译器位置发生改变,那可以试试重新配置该虚拟环境的编译器,虚拟环境出现问题主要与编译器位置的索引有关,编译器位置更改,虚拟环境索引不到编译器所在位置,虚拟环境失效,重新索引虚拟环境所需的编译器并根据情况看是否需要重新激活虚拟环境(一般情况下只要重新索引完位置就不再需要激活了)

(4)当使用pycharm创建虚拟环境过程中,出现Pipenv executable is not found

这就是个小问题了,只是缺少安装Pipenv
在命令终端中安装Pipenv包即可

pip install pipenv

安装后可以查看相关信息以及查看所安装的位置
然后重启pycharm后就可以看到pycharm中出现了
pipenv包的索引位置,如果没有出现,手动输入即可
poetry executable is not found同理


希望能够帮到迷途之中的你,知识有限,如有学术错误请及时指正,感谢大家的阅读

(^^)/▽ ▽\(^^)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐