随着使用 Python 的过程, 我们可能会遇到某个程式需要 A 版本的 M 套件, 但是另一个程式却只能和 B 版本的 M 套件相容, 或是我们只想测试一下 M 套件, 但不希望因为安装了 M 套件导致 Python 环境安装了 M 套件所倚赖的其他套件, 这时我们就可以利用模组提供的虚拟环境功能, 建立独立的 Python 环境, 客制安装所需的套件, 而不会弄乱系统本身的 Python 环境。
要建立虚拟环境, 必须执行模组, 并以要放置虚拟环境资料的路径为参数, 指定的路径若不存在,会自动建立。 Windows 上建立虚拟环境的指令如下:
讯享网
进入全屏模式 退出全屏模式
在 Mac/Linux 下的指令如下:
讯享网
进入全屏模式 退出全屏模式
在 Linux 上, 可能会遇到没有安装的情况:
进入全屏模式 退出全屏模式
只要使用系统套件管理程式安装即可, 以下以为例:
讯享网
进入全屏模式 退出全屏模式
实际上建立虚拟环境就是在该路径下复制一份 Python 的档案, 包括执行档以及必要的资料夹结构, 内容就跟刚安装好的 Python 近似。
后续的实验会以我的 Python 系统已经安装的 numpy 为观察标的, 这里先查看目前安装的 numpy 套件版本:
进入全屏模式 退出全屏模式
表示我的 Python 系统上安装有 1.22.2 版的 numpy 套件。
要使用刚刚建立的虚拟环境, 必须启用 (activate) 它, 在 Windows 上必须执行虚拟环境路径的 Scripts 资料夹下的指令:
讯享网
进入全屏模式 退出全屏模式
若你不是使用 PowerShell, 而是使用命令提示字元, 要执行的是。
切换成功会看到提示符号会多显示出虚拟环境资料夹的名称 (实际显示的位置视你的提示符号设定而定)。
在 Linux 上, 要使用指令执行虚拟环境路径 bin 资料夹下的 activate 草稿码:
进入全屏模式 退出全屏模式
如果你使用的是 csh 或是 fish shell, 要改成对应的 activate.csh 或是 activate.fish 草稿码档。
切换成功一样会显示虚拟环境的资料夹名称。
启用的程序实际上就是修改环境变数, 让你改成执行虚拟环境资料夹下的这一份 Python, 即使安装套件, 也是安装到虚拟环境的资料夹下。
我们可以查看在启用的虚拟环境中, 是不是有原本安装在 Python 系统的 numpy 套件:
讯享网
进入全屏模式 退出全屏模式
你会发现虚拟环境中根本就没有安装 numpy 套件。这里我们安装上一版 1.21.0 的 numpy:
进入全屏模式 退出全屏模式
稍后我们就可以在离开虚拟环境后确认是否会影响到系统的 Python 环境。
启用虚拟环境后, 会新增指令, 在任何地方下达此指令, 即可离开虚拟环境, 在 Windows 的示范如下:
讯享网
进入全屏模式 退出全屏模式
Linux 下则是:
进入全屏模式 退出全屏模式
你会发现离开虚拟环境后, 提示符号就不会再出现虚拟环境的资料夹名称了。
这个在 PowerShell 或是 Linux 下是一个在启用虚拟环境时建立的 shell 函式, 所以不论是在哪个路径下都可以执行。在命令提示字元下,其实是存在于 Scripts 资料夹下的批次档 deactivate.bat, 但因为在启用虚拟环境时已经将 Scripts 资料夹加入 path 环境变数, 所以也可以在任意路径下执行。
还记得我们刚刚在虚拟环境中安装了 1.21.0 版的 numpy 吗?现在我们检视一下原本系统上 Python 环境 的 numpy 版本:
讯享网
进入全屏模式 退出全屏模式
你会看到还是原本的 1.22.0, 不会受到虚拟环境的影响, 也就是说, 我们现在有两个 Python 环境, 想用 1.21.0 版的 numpy 时, 可以切换到虚拟环境, 想用 1.22.0 版的 numpy, 就回到系统本身的环境, 甚至还可以依据需要, 建立其他的虚拟环境。
若要删除虚拟环境, 由于虚拟环境的资料的资料全部都在单一资料夹中, 所以只要先离开虚拟环境, 再将虚拟环境的资料夹删除即可。
初学阶段可能不会觉得有必要使用虚拟环境, 不过随着应用的复杂度提升, 适度使用虚拟环境区隔不同的需求是个好主意, 甚至万一不小心把 Python 环境弄乱了, 也不必急着清理, 先建一个干净的虚拟环境应急也是不错的权宜措施。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/160756.html