#工作记录
在 Windows 系统下管理多个 Python 版本一直是个挑战。
Anaconda 和 virtualenv 的结合使用,可以高效地管理不同版本的 Python,确保每个项目都能在独立且适宜的环境中运行。
本文将详细介绍如何利用 Anaconda 管理基础 Python 版本,以及如何通过 virtualenv 为每个项目创建隔离的虚拟环境。
通过这种方式,我们可以在系统层面保持 Python 环境的整洁,同时为每个项目提供定制化的深度隔离运行环境。
WIN电脑上的Python版本管理记录——Anaconda与Virtualenv的协同使用_windows 让pyenv 识别已安装的anaconda python-CSDN博客
……
更多环境管理与运维技巧请翻看往期文章!
一、Anaconda:统一管理基础 Python 版本
(一)安装 Anaconda
访问 Anaconda 官方网站,下载适合 Windows 系统的安装程序并按照安装向导完成安装。Anaconda 提供了一个功能强大的 Python 分发版本,集成了大量的科学计算和数据分析库。
(二)创建不同 Python 版本的基础环境
使用命令行创建环境
打开 Anaconda Prompt,使用以下命令创建不同版本的 Python 基础环境(按需设置):
conda create -n python36 python=3.6
conda create -n python37 python=3.7
conda create -n python38 python=3.8
conda create -n python39 python=3.9
conda create -n python310 python=3.10
conda create -n python311 python=3.11
conda create -n python312 python=3.12
conda create -n python313 python=3.13
这些命令分别创建了 Python 3.6 到 Python 3.13 的基础环境,每个环境都有一个指定的名称,如 python36
、python37
等。
使用 Anaconda Navigator 图形界面创建环境
-
打开 Anaconda Navigator。
-
在界面中选择
Environments
选项卡。 -
点击
Create
按钮。 -
在弹出的窗口中,指定环境名称和 Python 版本。例如,创建一个名为
python310
的环境,并选择 Python 3.10 作为基础版本。 -
勾选
Include R
选项,以便同时安装 R 语言支持(可选)。 -
点击
Create
完成环境创建。
(三)记录每个虚拟环境的详细信息
创建好基础环境后,记录每个环境的 Python.exe 路径(备用)。
例如:
环境名 | Python 版本 | Python.exe 路径 |
---|---|---|
python36 | Python 3.6 | D:\ProgramData\anaconda3\envs\python36\python.exe |
python37 | Python 3.7 | D:\ProgramData\anaconda3\envs\python37\python.exe |
python38 | Python 3.8 | D:\ProgramData\anaconda3\envs\python38\python.exe |
python39 | Python 3.9 | D:\ProgramData\anaconda3\envs\python39\python.exe |
python310 | Python 3.10 | D:\ProgramData\anaconda3\envs\python310\python.exe |
python311 | Python 3.11 | D:\ProgramData\anaconda3\envs\python311\python.exe |
python312 | Python 3.12 | D:\ProgramData\anaconda3\envs\python312\python.exe |
python313 | Python 3.13 | D:\ProgramData\anaconda3\envs\python313\python.exe |
二、virtualenv:项目级别的环境隔离
(一)安装 virtualenv
在系统全局 Python 环境或其他合适环境中,运行以下命令安装 virtualenv:
pip install virtualenv
(二)为每个项目创建独立的 virtualenv 环境
假设你的项目位于 D:\Projects\my_project
目录下,并且你希望使用 Anaconda 中创建的 Python 3.10 基础环境来为该项目创建虚拟环境。可以按照以下步骤操作:
-
打开命令提示符(CMD),切换到项目目录:
cd D:\Projects\my_project
-
使用 Anaconda 基础环境中的 python.exe 路径来创建 virtualenv 虚拟环境:
例如项目需求python3.10版本,则可:
"D:\ProgramData\anaconda3\envs\python310\python.exe" -m virtualenv venv
这里,venv
是创建的虚拟环境的名称,可以根据你的项目需求自定义。
(三)激活项目虚拟环境
创建完成后,进入项目目录下的虚拟环境目录并激活:
cd D:\Projects\my_project
.\venv\Scripts\activate
激活后,命令提示符前会显示虚拟环境的名称,表示你已经进入该虚拟环境。此时,你可以在该环境中安装项目所需的 Python 包,而不会影响其他项目或系统全局环境。
三、在 PyCharm 中配置虚拟环境
PyCharm 是一款功能强大的 Python 开发工具,它与 Anaconda 和 virtualenv 配合使用时,可以提供更加便捷的开发体验。
(一)克隆项目并自动创建虚拟环境
-
在 PyCharm 中,点击
Git
->Clone
,输入项目的 GitHub 仓库地址并克隆项目到本地。 -
克隆完成后,PyCharm 会自动检测项目目录下的
requirements.txt
文件(如果存在)。点击界面中的提示,选择使用 requirements.txt 创建虚拟环境
。 -
在弹出的创建虚拟环境窗口中,点击右侧的
...
按钮,选择 Anaconda 基础环境中的 Python.exe 路径(例如,D:\ProgramData\anaconda3\envs\python310\python.exe
)作为基础解释器。 -
设置好基础解释器后,PyCharm 会自动完成虚拟环境的创建,并将项目所需的依赖包安装到该环境中。
(二)手动创建虚拟环境
-
打开 PyCharm 并进入项目窗口。
-
点击右下角的
Add Python Interpreter
(添加 Python 解释器)选项,选择Existing environment
(现有环境)。 -
在弹出的窗口中,点击右侧的
...
按钮,浏览并选择 Anaconda 基础环境中的 Python.exe 文件路径。 -
选择好解释器后,PyCharm 会将其添加为项目的 Python 解释器,你可以在此基础上进一步创建和管理虚拟环境。
(三)继承基础 Python 解释器的包
在 PyCharm 中创建虚拟环境时,可以选择继承基础 Python 解释器的包,这样可以确保虚拟环境中有基础但完善的依赖支持:
-
在创建虚拟环境的窗口中,勾选
Inherit from
选项,并选择相应的基础 Python 解释器。 -
这样创建的虚拟环境会自动包含基础环境中已安装的包,方便快速开始项目开发。
四、虚拟环境的多级隔离和管理流程图
下面是一个展示如何使用 Anaconda 和 virtualenv 进行虚拟环境多级隔离和管理的流程图:
五、针对特定开源项目的环境配置方案
在实际开发中,我们可能会遇到一些开源项目,它们对运行环境有特定的要求,必须在 conda 环境中安装和运行。针对这类项目,可以采用以下两种方案来实现部署和开发:
方案一:新建项目的 conda 虚拟环境并使用
-
打开 Anaconda Prompt。
-
创建一个新的 conda 虚拟环境,并指定 Python 版本(根据项目要求选择合适的版本):
conda create -n 项目环境名称 python=指定版本号
-
激活该虚拟环境:
conda activate 项目环境名称
-
根据项目的依赖要求,在激活的虚拟环境中使用 pip 或 conda 安装所需的包。例如,使用 pip 安装:
pip install -r requirements.txt
或使用 conda 安装:
conda install 包名称
-
在 PyCharm 中配置该 conda 虚拟环境作为项目的解释器:
-
打开 PyCharm,进入项目设置(
File -> Settings
)。 -
在项目设置中找到
Project Interpreter
选项。 -
点击右侧的齿轮图标,选择
Add
。 -
在弹出的窗口中选择
Existing environment
,然后浏览并选择刚才创建的 conda 虚拟环境中的 python.exe 路径(一般在 Anaconda 安装目录下的 envs 文件夹中,例如D:\ProgramData\anaconda3\envs\项目环境名称\python.exe
)。 -
点击
OK
完成配置。
-
方案二:使用 conda 嵌套 virtualenv 或 virtualenv 嵌套 conda
怎么使用嵌套虚拟环境实现项目部署之virtualenv嵌套conda绕开安装环境检测实现.venv部署facefusion_conda 实现venv功能-CSDN博客
conda 嵌套 virtualenv
-
首先,激活一个与项目需求相同python版本的 conda 虚拟环境。
-
在激活的 conda 环境中,再激活一个 virtualenv 虚拟环境。
-
这样做的目的和场景是:绕过某些开源项目比如facefusion部署时的强制conda环境检测。
-
conda 嵌套 virtualenv 的举例如下:
virtualenv 嵌套 conda
-
先使用 virtualenv 创建一个虚拟环境,并激活该环境。
-
在激活的 virtualenv 环境中,再激活一个相同python版本的conda虚拟环境。
-
这样做的目的和场景是:绕过某些开源项目部署时的环境检测并灵活处理软件包。
-
virtualenv 嵌套 conda 的实现举例如下:
嵌套虚拟环境的使用限制和实现限制
嵌套虚拟环境(如 conda 嵌套 virtualenv 或 virtualenv 嵌套 conda)是一种特殊场景下的解决方案,主要用于满足某些开源项目对环境隔离的特殊要求。然而,这种方式存在以下使用限制和实现限制:
-
兼容性问题 :不同版本的 Python、virtualenv 和 conda 之间可能存在兼容性问题。例如,较新的 virtualenv 版本可能对旧版本的 Python 或 conda 支持不佳,导致环境创建失败或功能异常。
-
路径配置复杂 :嵌套虚拟环境需要正确配置环境变量和路径,否则可能会出现命令找不到或包导入错误等问题。在 Windows 系统中,路径配置的复杂性可能会增加出错的风险。
-
终端和命令行工具的差异 :不同的终端(如 CMD、PowerShell、Windows Terminal 等)对环境变量的处理和命令的支持有所不同。某些命令或操作在特定终端下可能无法正常执行,例如在某些版本的 PowerShell 中,激活嵌套虚拟环境的命令可能需要特殊配置或权限才能成功运行。
-
权限限制 :在某些系统环境下,创建或激活嵌套虚拟环境可能需要管理员权限。如果用户没有足够的权限,可能会导致操作失败。
-
环境隔离性不足 :尽管嵌套虚拟环境旨在提供更精细的隔离,但在某些情况下,环境之间的隔离可能并不完全。例如,某些系统级的环境变量或配置可能会渗透到嵌套环境中,导致意外的依赖冲突或行为异常。
-
工具支持有限 :并非所有开发工具和 IDE 都能很好地支持嵌套虚拟环境的配置和管理。这可能会给开发者带来额外的配置和调试工作,影响开发效率。
由于上述限制,嵌套虚拟环境的方式并不适合所有场景,通常只在有特殊需求且经过充分测试和验证的情况下才考虑使用。在常规开发中,建议优先使用单独的 conda 环境或 virtualenv 环境来满足项目需求。
六、总结
通过结合使用 Anaconda 和 virtualenv,我们可以在 Windows 系统上高效地管理不同版本的 Python。Anaconda 用于统一管理基础 Python 版本,virtualenv 用于创建项目级别的隔离环境。这种组合方案既避免了系统环境的混乱,又确保了项目的独立性和稳定性。希望本文的介绍能够帮助你在 Windows 系统下更好地管理 Python 环境,提高开发效率。
如果你在实践中遇到任何问题,欢迎随时交流和讨论。