当前位置: 首页 > news >正文

Windows11系统下python虚拟环境管理独家心得

#工作记录

一、前言

用Anaconda管理虚拟环境无疑是最好的,它不但有图形界面可以用来安装和管理软件包,而且能在安装软件包时自动解决依赖问题,有着使虚拟环境相对比较稳定等优势。

但是Anaconda也有着致命的劣势,就是使用过于频繁或进行一些极限操作之后,Anaconda大概率会变得非常不可靠,即使只是在某个conda环境中单独进行的风险操作,但有极大的可能会导致所有conda虚拟环境不可用,不管是新建在Anaconda安装目录下的虚拟环境还是新建在项目目录下的codna虚拟环境(conda create --prefix命令指定conda虚拟环境位置)。

这一劣势具体影响体现在:当你有数量级的项目全部依靠Anaconda来管理虚拟环境时,一旦进行了风险操作,所有项目都将使用不了conda虚拟环境!!这无疑是非常令人抓狂的。

虽然,有一些关于Anaconda的修复方法,其中也包括完整恢复conda虚拟环境,但也不见得能完全修复到故障前的水平,因为很多虚拟环境中的很多包和库都是建立在安装时与计算机硬件软链接通信的基础上深度构建的,重新修复的conda虚拟环境很可能无法再次有效与硬件建立通信,进而导致该环境不可用。

关于修复Anaconda可以参考官方文档和我之前记录过的文章:

二、Anaconda修复&故障排除:

官方故障排除指导文档Troubleshooting - Anaconda

不用卸载,保留conda虚拟环境,直接修复Anaconda安装#Windows11_anaconda修复-CSDN博客

windows11怎么用命令修复Anaconda_anaconda修复-CSDN博客

记录备份项目的conda环境和pip包_备份conda-CSDN博客

 

 三、python版本和虚拟环境管理建议

经过长期实践,到目前为止,建议采用Anaconda作为计算机上的python版本的主要管理工具;建议采用virtualenv虚拟环境作为项目环境的主要管理方式。当然也可以多种工具结合使用。

 

 四、python版本和虚拟环境管理实操

(一)python版本管理实践

简单点说就是在Anaconda中新建各个python版本的虚拟环境,用于后续各种项目的调用,这里的调用仅仅是指作为项目的基础python解释器,然后用对应版本的python程序再次新建virtualenv虚拟环境以供本地项目使用。

这样做的用意或者好处是:

1、利用Anaconda的便捷性,把Anaconda作为计算机上可供全局或局部使用的python管理软件,以保证灵活使用;

Anaconda有着比较友好的用户界面;有着比较简单的软件包安装依赖解决方案;有着统一的conda虚拟环境管理界面,方便统一切换进行深入管理等。

但是环境多了或者极限操作多了,Anaconda容易崩溃,会导致其他软件不能识别和虚拟环境不可用。

2、最小限度的使用Anaconda,以保证Anaconda的长期稳定性能;

既然Anaconda在管理数量极的虚拟环境时存在崩溃风险,那么我们就尽量减少Anaconda的使用来保证全局的python可用性,并且在接下来的步骤中,将对Anaconda进行一次隔离,保证Anaconda的基础功能健康。

3、与项目虚拟环境再次保持隔离,以保证一旦Anaconda崩溃的情况下,仍然能使本地虚拟环境能正常工作;

4、virtualenv依赖于系统的pyhon版本才能创建虚拟环境,通过指定Anaconda下的pyhon.exe的路径可以让virtualenv创建任意python版本的virtualenv虚拟环境;

虽然步骤可能稍微麻烦了一点点,但是后续长期深度使用下来,这个方案还是比较推荐的。

通过人为的Anaconda与virtualenv隔离,因为virtualenv虚拟环境能重新复制python.exe等相关软件包到本地项目目录下,既能调用Anaconda中的不同python版本,也能与Anaconda相隔离,做到互不影响,也不用额外再在计算机中安装python。

 

(二)virtualenv虚拟环境管理实践

PyCharm算是比较有代表性的编辑器软件,优势比较明显,功能丰富的同时也有很大的项目适应性,我们将以在PyCharm中的操作举例。

这是因为virtualenv虚拟环境是依赖于系统中的python版本作为virtualenv的“基础python”来进行创建的,创建后相当于复制了一份系统中的python版本来给项目使用,virtualenv既可以继承父级python软件包,也可以是创建纯净python环境,该虚拟环境文件夹可以创建在项目本地,也可以创建到指定位置供跨项目共享(多个项目共用同一个解释器,虽然不推荐,但有些测试场景可能会用到)。这样virtualenv和Anaconda就隔离了起来,就跟在系统里安装好多个python版本的使用是一样的。

用Anaconda下的python程序新建virtualenv虚拟环境

比如我要新建python版本为3.11的virtualenv虚拟环境为例

1、打开终端使用命令新建:

(1)进入Anaconda中的名为python311虚拟环境路径(一般是在Anaconda安装目录下的envs文件夹下)

(2)找到python.exe路径,然后右键复制文件地址

 

文件地址如这: "D:\ProgramData\anaconda3\envs\python311\python.exe"

(3)在终端中输入以下命令

"D:\ProgramData\anaconda3\envs\python311\python.exe" -m venv 环境名称

这样就使用的使用特定的由Anaconda提供的Python 解释器新建了virtualenv虚拟环境。

示例

假设你想在   D:\Projects   目录下创建一个名为   myenv   的虚拟环境,可以按照以下步骤操作:

1)打开命令提示符。

2)切换到目标目录(如果你希望虚拟环境创建在其他位置,可以省略这一步):

cd D:\Projects
3) 运行创建虚拟环境的命令:

"D:\ProgramData\anaconda3\envs\python311\python.exe" -m venv myenv

 完整流程

假设我们希望在   D:\Projects   目录下创建一个名为   myenv   的虚拟环境,完整步骤如下:

# 打开命令提示符
# 切换到目标目录(可选)
cd D:\Projects# 使用指定的 Python 解释器创建虚拟环境
"D:\ProgramData\anaconda3\envs\python311\python.exe" -m venv myenv# 激活虚拟环境
myenv\Scripts\activate# 在虚拟环境中安装包(例如安装 Flask)
pip install Flask# 退出虚拟环境
deactivate

 注意事项

• 路径中的空格:如果你的路径中包含空格,需要用双引号括起来,就像上边在命令中已经做的那样。

• 环境名称:环境名称可以自定义,但建议使用简单的英文名称,避免使用中文或特殊字符,以免引起不必要的问题。

 

 

2、使用PyCharm使用图形界面新建:

这里也将说到三种方式:

1)一种是克隆项目后用PyCharm打开时的自动新建virtualenv虚拟环境

2)一种是打开项目后手动新建virtualenv虚拟环境

3)还有一种是用项目中的“.py”文件中的侦测提醒来创建virtualenv虚拟环境

同时最后也将说到创建失败后的处理方法。

 

1)一种是克隆项目后用PyCharm打开时的自动新建virtualenv虚拟环境

随便打开一个PyCharm窗口,也可以是现有项目窗口,找到项部的菜单栏,找到“Git”——找到“克隆”,进入克隆窗口:

 在克隆窗口URL这里输入要克隆的GitHub仓库地址:

输入仓库地址后,下边的目录会自动补齐一般不用修改,然后点击右下角的“克隆” :

然后克隆窗口就被隐藏了,在当前PyCharm窗口的下边框栏处,点击进度条: 

可以查看到克隆进度: 

 克隆仓库完成后,PyCharm会自动在窗口打开并进入克隆好的项目文件夹,并且自动侦测项目文件夹主目录下的依赖文件“requirements.txt”并提醒用requirements.txt文件创建虚拟环境:

 在这里,我们要查看仓库网页中的README.md文档,确认python版本!

 

可以查阅到,该项目所需的是python3.10版本:

 然后我们回到项目的PyCharm窗口,更改项目的基础解释器为项目要求的python版本:

 

 可以把“正在创建虚拟环境”小窗口拉长一点(小窗口的右下角或右侧边等都可以用鼠标选中后拖拽),然后更改项目的基础解释器,这里我们要选择Anaconda虚拟环境名为“python310”的虚拟环境路径下的"python.exe"路径:

点小窗最右侧的三个小点“…”:

然后选择python3.10的路径:

这里要找到Anaconda的虚拟环境路径,比如  D:\ProgramData\anaconda3\envs

 然后选择名为python310的文件夹,该文件夹对应的即为python3.10版本:

然后该python310文件夹列表中用鼠标滚轮或用鼠标拖拽往下翻找“python.exe”文件:

 

鼠标点击选中该文件(python.exe)后看路径栏中有没有选中上了,选中之后点击小窗右下角的“确定”:

点击“确定”之后可以看到“正在创建虚拟环境”的小窗中的“基础解释器”路径已经更新:

 然后再次点击这个小窗右下角的“确定”开始自动新建项目本地虚拟环境:

 

可以在右下角的隐藏任务处点开查看新建的进度:

等创建完成之后,解释器就能自动识别为项目的解释器了: 

 

同时也在项目的文件夹下创建了一个解释器文件夹:

 

以上就是用克隆项目后用PyCharm打开时的自动新建virtualenv虚拟环境的详细步骤演示。

如果虚拟环境创建失败或出错,在后面我们会记录到处理办法。

 

 

 

2)打开项目后手动新建virtualenv虚拟环境

如果我们已经用git克隆项目到本地了,然后用PyCharm打开之后因为种种原因没有在首次打开时新建虚拟环境,那么可以用以下方法,用Anaconda的python作为基础解释器新建本地virtualenv虚拟环境。

 点击右下角“无解释器”处,选择“添加新的解释器”:

 继而选择“添加本地解释器”

 在弹出的窗口中进行选择:

 在下图红框标出的地方选择Anaconda虚拟环境中python.exe的路径:

在弹出的小窗中选中python3.10的路径,也就是“D:\ProgramData\anaconda3\envs\python310\python.exe”

然后点“确定”:

然后返回创建虚拟环境的小窗查看是否基础python的路径已经更新为Anaconda虚拟环境pyhton310的路径。

然后可以继续创建virtualenv虚拟环境了。

但这种方法在较新版本的PyCharm中有些情况下会失效,但步骤是对的,如果失效不能调用Anaconda的虚拟环境中的python.exe作为项目创建virtualenv虚拟环境的“基础python”,那请继续看下一种方法。

 

 3)在PyCharm中用项目“.py”文件中的侦测提醒来创建virtualenv虚拟环境

在PyCharm中打开项目中的任意“.py“文件:

打开后在PyCharm中右上角会出现提醒:

点击"使用requirements.tx创建虚拟环境":

然后会弹出创建虚拟环境的小窗:

同样的点击小窗最右侧的三个小点”…“

选择项目适合的python版本路径:

所需的python版本请在项目的网页版查看

比如 Anaconda下的D:\ProgramData\anaconda3\envs\python310\python.exe这个文件地址:

然后点击”确定“:

 只要网络条件允许,过一会就能在PyCharm的右下角看到解释器已被配置的信息:

放大图片如下图所示: 

 这样,就利用Anaconda的python程序 在PyCharm中用项目“.py”文件中的侦测提醒功能来创建好了virtualenv虚拟环境。

 

以上有三种利用Anaconda的python程序 在PyCharm中创建virtualenv虚拟环境的方法,可以在实际使用中,根据情况灵活使用。

说完了实践,接下来说说环境失效或故障的解决方法,请继续接着往下看。

 

五、环境失效或故障的解决办法

如果当前的virtualenv虚拟环境不能满足项目的使用要求,或者虚拟环境已经依赖错乱无法解决了,可以直接删除项目本地的虚拟环境文件夹(.venv或是venv文件夹),然后重新创建虚拟环境,流程和上边记述的还是一样。

删除本地虚拟环境所在的文件夹之后,右下角仍然会显示原来的解释器,但解释器已经不可用了,这时要点进右下角的解释器,进入“解释器设置”:

在这里可以看到解释器已经是无效的红字状态,这时要点红框处最右边的倒三角符号进入解释器管理选项,翻到最下边的“全部显示”:

 翻找到最下边的“全部显示”:

 然后鼠标选中无效的解释器,移动鼠标点上方的减号“—”,以删除这个无效解释器,“+”加号则是可以添加路径以在列表中新建解释器。铅笔图标则是可以给解释器重命名。

这里的解释器就是python.exe程序,来自于虚拟环境或其他python版本路径。当然也就可以来自Anaconda虚拟环境路径。

然后比较关键的一步操作是——回到解释器管理界面,选择“无解释器”

然后依次点击“应用”、“确定”。 

如果不选择“无解释器”的话,回到项目的PyCharm窗口中,将不能激活PyCharm的创建解释器侦测提醒的辅助功能。

这样,删除解释器的流程就算是完成了。

 

接下来,就可以按照文章中的流程创建新的解释器(虚拟环境)了。 

 

更多关于虚拟环境管理的信息请参考:

Windows 11 下 Python 版本管理的 “三剑客” 协同秘籍:Anaconda、Virtualenv 与 Pipenv 的最佳协同实践_windows python版本管理工具-CSDN博客

 


http://www.mrgr.cn/news/96490.html

相关文章:

  • uniapp选择文件使用formData格式提交数据
  • opencv图像处理之指纹验证
  • Java EE(18)——网络原理——应用层HTTP协议
  • leetcode 28 Find the Index of the First Occurrence in a String
  • Jmeter的压测使用
  • 从PDF到精准答案:Coze助力RAGFlow框架提升数据召回率
  • 源码刨析与插入实现:RBT比AVL强在何处?
  • SpringBoot实现RBAC权限校验模型
  • C++进阶——位图+布隆过滤器+海量数据处理
  • 小学数学解题方法专题3-列表法-提升2
  • 3.27学习总结 爬虫+二维数组+Object类常用方法
  • RocketMQ - 从消息可靠传输谈高可用
  • 在Qt中判断输入的js脚本是否只包含函数
  • fluent_UDF学习笔记
  • 横扫SQL面试——连续性登录问题
  • 在bootstrap下实现万年历
  • Muduo网络库实现 [二] - Buffer模块
  • 基于自定义注解+反射+AOP+Redis的通用开关设计:在投行交易与风控系统的落地实践
  • SpringBoot 概述
  • Dubbo分布式开发框架