在 Python 开发中,虚拟环境(Virtual Environment)是一种工具,用于创建独立的 Python 执行环境。它允许不同的专案使用不同版本的 Python 解释器和依赖套件,而不会相互干扰。
虚拟环境的作用
- 依赖隔离:避免不同专案的依赖发生冲突。例如,webCrawler网页专案 使用 Django 2.2,而机器学习专案需要 Django 3.0,可以使用虚拟环境让两者共存。
- 便于测试:在不同环境中测试应用程式,例如测试不同版本的依赖套件对应用程式的影响。
- 跨环境兼容:本地开发环境与伺服器部署环境保持一致,减少部署问题。
虚拟环境的工作原理
虚拟环境是透过拷贝或模拟一个独立的 Python 解释器及其 site-packages(套件存放目录)来运行的。当虚拟环境被激活时,该环境的 Python 解释器会覆盖系统全域的 Python,从而执行该虚拟环境内的程式和安装的套件。
如何建立虚拟环境: Anaconda Navigator & pip3
Anaconda Navigator 建立虚拟环境的特点
- 图形介面操作:适合对命令行不熟悉的使用者。
- 依赖管理:Conda 作为套件管理器,专为科学计算优化,能自动解决依赖冲突。
- 更多预设套件:Anaconda 自带的环境会包含数十种常用的数据科学相关工具,如 NumPy、Pandas、Jupyter Notebook 等。
- 多语言支持:除了 Python,也支持 R 等其他语言的环境管理。
如何使用 Anaconda Navigator 建立虚拟环境
开启 Anaconda Navigator在你的操作系统中搜寻并启动 Anaconda Navigator。
建立新环境在左侧菜单选择 "Environments"。点击右下角的 "Create" 按钮。输入虚拟环境的名称,例如 myenv。选择需要的 Python 版本(例如 Python 3.8 或 3.10)。点击 "Create",Anaconda 会自动设置好新的虚拟环境。
安装所需套件选择刚刚建立的环境,点击 "Not Installed" 筛选出尚未安装的套件。搜寻需要的套件(如 numpy, pandas 等),点击前方的方框选取,然后点击 "Apply"。
启用虚拟环境在 Anaconda Navigator 中,选择环境后,可以直接开启应用程式,如 python、 Jupyter Notebook、Spyder 等。如果使用命令行启用:conda activate webCrawler
这时候,命令行提示符会变成 (webCrawler),表示你已经进入了 webCrawler 虚拟环境。
查看当前虚拟环境
conda info --envs这会列出所有已经创建的虚拟环境,并显示当前启动的虚拟环境。如果虚拟环境正在启动,会在当前环境名称旁边显示 *。
❯ conda info --envs
# conda environments:
#
base /opt/anaconda3
webCrawler * /opt/anaconda3/envs/webCrawler
website /opt/anaconda3/envs/website
在上面的例子中,webCrawler 环境是当前启动的环境,因为它旁边有 *
检查虚拟环境中的 Python 路径
which python例如,当你启动名为 webCrawler 的虚拟环境后,which python 应该会返回类似下面的路径:
/opt/anaconda3/envs/webCrawler/bin/python
如果环境已经启动,这时候你应该看到指向虚拟环境中的 Python 路径,而不是指向 Anaconda 的全域安装。
安装套件
conda install numpy
查看已安装的套件
conda list
这会列出当前虚拟环境中安装的所有套件。如果你看到的套件列表跟全域的套件不同,那么表示你确实在虚拟环境中。
退出虚拟环境
conda deactivate
删除虚拟环境
如果你不再需要 website 这个环境并且想要删除它,可以按照以下步骤操作:conda env remove --name website
确认删除成功
conda info --envs
删除虚拟环境 website 中的 pandas 包
如果你只想删除虚拟环境 website 中的 pandas 包,而不是删除整个环境,可以使用以下命令来移除 pandas:步骤:1.激活 website 环境:首先,你需要激活 website 环境,这样你才能对其中的包进行操作。conda activate website
2.卸载 pandas 包:在激活环境后,你可以使用 conda remove 命令来卸载 pandas 包。conda remove pandas
这个命令会将 pandas 从当前激活的环境中移除。
确认是否成功移除
你可以使用以下命令来确认 pandas 是否已经被成功移除:conda list
这会显示目前环境中已安装的所有包。检查列表中是否还有 pandas,如果已经没有,则表示成功卸载
补充:如果使用 pip 安装过 pandas,可以使用 pip uninstall:pip uninstall pandas如果你是在 website 环境中使用 pip 安装了 pandas,则需要使用 pip 命令来卸载它
使用 venv(内建模组,Python 3.3+)
# 创建虚拟环境
python3 -m venv myenv
# 激活虚拟环境
# Linux / MacOS
source myenv/bin/activate
# Windows
myenv\\Scripts\\activate
# 停用虚拟环境
deactivate
虚拟环境中的操作
- 在虚拟环境内安装套件:
pip install package_name
套件将只安装到该虚拟环境中,而不会影响全域环境。
-
查看虚拟环境中的已安装套件:pip list
-
虚拟环境的档案结构假设虚拟环境名称为 myenv,结构可能如下:
myenv/
├── bin/ # 虚拟环境的执行档,例如 python, pip(Linux / MacOS)
├── Scripts/ # 虚拟环境的执行档(Windows)
├── lib/ # 虚拟环境的 Python 标準库及依赖套件
├── include/ # C/C++ 标头档案
├── pyvenv.cfg # 虚拟环境的设定档
Anaconda 与 venv/virtualenv 的比较
pip 和 conda 的差异在于,pip 会直接装最新的;conda 会选择相容性最高的版本安装,而且在安装之前会把要变更的东西都列出来,你确认之后他才会执行。
特性Anaconda 虚拟环境
venv/virtualenv
操作方式 | 图形界面或 Conda 命令行管理 | 主要依赖命令行操作 |
预设套件 | 包含多种科学计算工具 | 仅包含基础 Python 套件 |
套件管理 | 使用 Conda,专为数据科学设计 | 使用 pip,通用的 Python 套件管理 |
依赖解决 | Conda 更智能,解决依赖冲突较容易 | pip 有时会遇到版本或依赖冲突 |
支援的语言 | Python、R、Julia 等 | 仅支持 Python |
灵活性 | 内置功能丰富,但相对封闭 | 灵活通用,可与其他工具搭配使用 |
适用场景 | 数据科学、机器学习 | 通用 Python 开发 |
在 VS Code 中使用 Conda 虚拟环境
启动 VS Code打开你的 .py 文件所在的目录。
选择 Conda 环境作为解释器
- 点击 VS Code 窗口底部的 Python: Select Interpreter(或者按 Ctrl+Shift+P 打开命令面板,输入 Python: Select Interpreter)。
- 在弹出的选单中,找到你创建的虚拟环境名称(例如 myenv)。
- 如果看不到,请先启动终端执行 conda activate myenv,然后重新打开选单。
- 如果还是看不到,可以手动添加环境(见下方)。
手动添加环境(若需要)
- 确认你的环境位于以下路径(根据系统不同):
- Windows: C:\\Users<你的用户名>\\Anaconda3\\envs\\myenv\\python.exe
- macOS/Linux: /Users/<你的用户名>/anaconda3/envs/myenv/bin/python
- 选择「Enter interpreter path」,然后选择上述路径。
检查虚拟环境
- 打开 VS Code 的终端(快捷键 Ctrl+ 或 Ctrl+Shift+),确认虚拟环境名称已经出现在终端提示符中(例如 (myenv))。
- 如果没有,手动输入 conda activate myenv 激活。
编写并运行代码现在,你在 VS Code 中撰写和运行 .py 文件时,会使用 myenv 中的 Python 解释器和相关套件。