Python中的 “虚拟环境”，一个概念的缺失带来的影响

统一的标准很重要（测试 xlog 上的链接引用格式）

2024-04-10，下午 14:00~16:05，倒腾了 2 个小时，终于能够成功运行 PyHanLP 了！下面记录一下学到的知识👇

为了完成毕业设计中的一个环节 —— 从文本中提取非结构化的信息 —— 我需要能够理解语义的工具，所以今天我为我的 Python 安装了 PyHanLP 。

下面分享一下我遇到的问题。有空了就介绍一下什么是 HanLP，没空就算了。

这篇文章，我将用我的实际经验向你证明，一个概念的缺失，有可能会让你的工作变得更复杂！如果我能够重视这个概念，并且理解它的影响，我想我会选择学习 Conde 这个专业的工具（用来专门负责 Python 的虚拟环境），再去下载 HanLP 这个第三方库。

HanLP 傻瓜安装注意事项

我使用了官网的 傻瓜安装包，谁知道这个傻瓜安装包真把我当傻瓜，它连安装目录都不让我选，就直接一键帮我安装了 JAVA 环境、HanLP、以及一个新 Python 3.8！

并且这些东西都被安装在了 C 盘！

我原本的 Python 3.12 无法调用 PyHanLP ，这个 PyHanLP 只能由傻瓜安装的 Python 3.8 才能调用。

为了解决这个问题，我试图将原本的项目虚拟环境中的 Python 3.12 换成 Python 3.8，但是换过之后原本写好的代码不管用了 —— 原因是 Python 3.8 中并没有安装这些库。

我这才明白，虚拟环境中的 Python 版本也是指定的，就算我在虚拟环境中把解释器改成 Python 3.8，它也无法使用原本 Python 3.12 安装在虚拟环境中的 pip 库，因为这些库只认 Python 3.12！所以我必须新建一个虚拟环境。

然后我新建了一个虚拟环境，调用 Python 3.8 ，并将之前的代码都复制过来，然后重新下载这些代码中需要的第三方库，然而问题再次出现在我面前。

我试着运行 PyHanLP ，发现终端无法找到这个库。我又明白了，原来 PyHanLP 是全局环境的库，虚拟环境中无法调用全局环境中的库。

可问题是，就是因为在虚拟环境的终端中使用 pip install pyhanlp 根本就无法下载它，所以我才会选择傻瓜安装包来安装 PyHanLP。也就是说，我无法在虚拟环境中使用 PyHanLP 了。我只能使用 C 盘的 Python 3.8，然后将库都装在 C 盘！

要解决这个问题，我不得不放弃使用虚拟环境，而直接使用全局环境。我需要将 Python 3.8 添加到电脑的环境变量中，并且 Python3.8 的优先级必须比 Python3.12 的高。只有这样，在终端中使用的 pip install 命令才针对 Python3.8。

如果是虚拟环境那么我安装的所有库，都回安装在我的代码所在的文件夹 —— 我当然不会放在 C 盘。

正是这一个个拦路虎，让我终于明白了虚拟环境的真正含义 —— 拥有自己的 pip 库，独立于其他任何的 Python 解释器的工作环境！

我的 C 盘将被下载更多的库，本就内存不多。这一切都是因为我没有办法在虚拟环境中安装 PyHanLP！也都因为我之前不理解 “虚拟环境”。

虽然我也是新手，但至少从今天的经验中，我也许能够给出一些建议。

如果你是 Python 新手：如果你将要下载许多 Python 第三方库，也准备经常使用 Python 帮助你完成工作，并且你不想让你的 C 盘背负太多（想把东西存在其他盘），那你就去老老实实下载一个 Conde 吧，（Conde 是一个专门管理 Python 库、创建虚拟环境的工作平台）。

如果你也想使用 HanLP 这个库，官方也提供的 conda 下载方案，两行代码就能搞定安装（并不比傻瓜安装包复杂）。而且我猜测，如果在 conda 中配置好了安装路径，那么它帮你安装的 PyHanLP 都不会傻乎乎地安装在 C 盘！

什么是虚拟环境

简而言之，虚拟环境就是，选择使用一个版本的 Python 、有自己独立的 pip 库。

虚拟环境就相当于你又安装了一个新 Python ，不过毕竟不是真的安装了一个新 Python ，创建虚拟环境不会使用很大内存。

如果你的项目已激活虚拟环境，那么你只能使用该环境中安装过的 Python 库，就算你原来那个 Python 里有很多库，虚拟环境中的 Python 也无法调用它们。

虚拟环境是用来：将一个项目所需的库和其他项目所需的库区分开，对每个项目文件而言节省空间。

如何在 VSCode 中创建虚拟环境

在 VSCode 中为项目创建专属的 Python 虚拟环境：

打开 VSCode，打开文件夹

点击 VSCode 右下角的，Python 编辑器，在弹出的选项中选择，“创建虚拟环境”，点击创建一个虚拟环境，然后你打算使用的 Python 版本

新建终端，在终端中输入 .\venv\Scripts\activate 激活虚拟环境，其实就是让终端进入这个目录。值得注意的是，下次再使用 VSCode 打开这个文件夹就不需要再激活虚拟环境了，软件会自动进入。

这件事的结局

我并不打算下载 Conde 以重新安装 HanLP ，但我也不打算一直使用这个傻瓜安装包为我在 C 盘配置的一切。

我没有更多时间去学 Conde 的使用，不仅仅因为它是英文界面，还因为半天的时间对我而言也非常稀缺。我还有很多事情要忙。

等我考上研究生后，再来好好操作这个好工具吧！现在我只好妥协，在 C 盘完成我的毕业设计。