python:windows下管理虚拟环境

目录

一、python解释器

1、安装

2、虚拟环境

二、miniconda

1、下载安装包

2、安装 

3、配置环境变量 

三、管理虚拟环境 

1、创建虚拟环境

2、pip安装依赖

四、多用户机制

1、python多用户机制

2、用户站点配置

3、用户目录下的包


一、python解释器

python是一种解释性语言,代码在运行时被解释和执行。使用该语言时,需安装python解释器。

1、安装

下面是官方下载链接。另外有了解释器后,通常还需要一些额外的第三方依赖包,简称导包。

python下载官网https://www.python.org/downloads/

打开上面链接,进入官网,这里区分了Windows、Linux等不同系统,选择Windows系统。

python解释器有众多版本,其中python 2.x已经不咋用了,大家还是直接下载python3.x的版本,我这里就直接选择了最上面的python3.12.5版本,64位操作系统。 

下载的 exe 文件,直接双击安装即可。Install Now直接安装在C盘,不建议。我选择的是下面的自定义安装,可自己选择路径。

 自定义安装,直接点击下一步即可,然后选择自己要安装的路径,下面图中前五个选项直接勾选,后面就不需要自己设置环境变量了。

判断安装是否成功, 终端cmd敲入python,如下所示。

如果前面没有勾选 添加环境变量,或者敲入python不成功的,可设置下环境变量。按照下面图中箭头依次打开。

 

主要是添加这两个路径 ,如果前面默认勾选了 ,这里会自动生成的,没有自己加上就行。

 

如果我们需要安装多个版本的python 解释器,也是可以的,是可共存的,需要大家放置在不同路径下。至于环境变量,如果每个版本都添加了环境变量,系统默认使用顺序最上面的。我虽然没有装多个python 解释器,但我同时装了python 解释器 和 anaconda(默认自带python解释器),与装多个解释器的原理一样,下图表示系统默认使用最上面的python 解释器,如果我们想将那个设置为系统默认使用的,将其移到最上面。

 python解释器默认自带了pip包管理工具,所以接下来就可直接pip安装你所需要的工具包。

pip install 包名

如果想查看安装包的路径,一般在默认python解释器目录下的 Lib->site-packages下。

2、虚拟环境

python解释器也是允许你创建多个虚拟环境的,只不过这些虚拟环境共享同一个版本的python解释器,言外之意,你只能用这一个版本的python,然后在不同的虚拟环境下,安装的第三方包版本不同而已,但是很多时候,你要安装的第三方包,又与python版本紧密相关。

下面是创建虚拟环境的命令,myenv是虚拟环境的名称

python -m venv myenv

我这里创建了一个名为 fastgpt 的虚拟环境 

 激活虚拟环境命令如下:

fastgpt\Scripts\activate

#PowerShell命令
.\fastgpt\Scripts\Activate.ps1


#linux环境
source fastgpt/bin/activate

激活虚拟环境后,命令行提示符会发生变化。通常,虚拟环境的名称(如 fastgpt)会显示在命令提示符前面,表示你已经进入虚拟环境。例如:

 

 退出虚拟环境

deactivate

python -m venv 在创建虚拟环境时,只会使用系统上已有的 Python 版本,如下。

如果你想在不同的虚拟环境中使用不同版本的 Python,你必须先安装并配置多个 Python 版本,然后在创建虚拟环境时指定相应的 Python 版本。如下: 

python3.9 -m venv myenv

这样就会创建一个基于 Python 3.9 的虚拟环境,但这种做法要求你已经安装了Python 3.9 版本的解释器。

另外,如果你想查看某个版本的python解释器,都创建了那些虚拟环境,python解释器并没有一个全局命令来列出已存在的虚拟环境。

通常,最快的方式则是查看文件夹,隔离的虚拟环境本质上就是一个个文件夹。常见的存放位置,项目文件内、自定义路径等。

这样看来,如果你需要管理多个 Python 版本的虚拟环境,并且不希望自己手动安装不同的 Python 版本,Anaconda 将会是一个更便捷的工具。不过如果你只是希望隔离依赖而不关心 Python 版本,venv 已经足够使用。

二、miniconda

不同项目,可能需要不同版本的解释器,不同版本的第三方依赖包,这时候就涉及到了虚拟环境。虚拟环境顾名思义,可以为每一个项目创建一个环境,不同的环境互不影响,能做到随用随切。

Anaconda在创建虚拟环境时,不仅可以选择python解释器的版本,而且还配备了各种全局命令,便于使用者管理多个虚拟环境。 

专业解释:Anaconda是一个包含了大量数据科学和机器学习相关包的 Python 发行版。它附带了 conda包和环境管理工具、许多预安装的库和工具,以及图形界面的 Anaconda Navigator。

Miniconda 是一个较小的 Python 发行版,它包括 conda 工具和Python 解释器,所以更像是Anaconda 的阉割版。相较于AnacondaMiniconda 体积小了很多,占用磁盘空间少了很多,对于我们一般的开发者足够用了。

所以这里我选择安装的是miniconda,Anaconda的安装和miniconda有异曲同工之处,会一个,另一个自然就会了。

1、下载安装包

清华镜像源https://mirrors.tuna.tsinghua.edu.cn/

首先需要下载miniconda的安装包,我这里利用清华镜像源下载。上面链接进去,找到anaconda,点进去。

选择miniconda,点击

根据需求选择安装包 ,我选择是图中箭头所指,最好将时间Date以倒叙排序,这样上面就是比较新的版本。

给大家看看我下的比较古老的版本。下图左边是现在常用的miniconda图标,右边是比较古老的产物,安装到最后就只有一个无解问题。

古老版本安装最后提示下面的错误,可能是不支持自定义路径。 

2、安装 

双击下载的安装包, Next即可。

这里默认是装在C盘的,不建议。大家可按自己习惯选择目录,我这里是装在了D盘。

这块添加环境变量并没有默认勾选,可勾选也可不勾选。

勾选了也有可能会报错(勾选之后,它会提示你不建议),如果不勾选,后面可手动添加,没啥大问题,我这里是么有勾选的。Install安装即可,进度条会很快的 ,继续Next

3、配置环境变量 

 如1.1节配置环境变量一样,打开高级系统设置->环境变量->系统变量-> 选中Path变量进行编辑。依次添加如下三个目录,确定保存成功。

 终端输入 conda --version 后,如下表示环境变量配置成功了。

切记:如果你在安装miniconda之前已经安装了python 解释器,并将其设置为系统默认的。如何检查呢?

一种办法是在终端下输入python,会输出系统默认的python解释器版本。这种方法需要你清楚知道自己单独安装的python解释器版本。我这是3.12.5。

另一种方法是打开环境变量,看下python 解释器和miniconda谁在最上面。

 

忽略我图中的Anaconda(就是一个命名而已),大家认为它就是miniconda 就行。接下来,我们试验下将miniconda上移到最上面。

终端再次输入python,版本已经变了,这就表示现在系统默认的是miniconda中的python解释器。

三、管理虚拟环境 

上一小节安装了miniconda工具,这节介绍下该工具如何使用,以及如何创建和管理虚拟环境。

miniconda中默认自带一个名为conda的包管理工具,和pip工具有异曲同工之处,并且miniconda中也自带pip。conda主要用于管理虚拟环境的,也可以安装三方依赖包。

1、创建虚拟环境

先列出来需要用到的命令。

conda env list   #查看所有虚拟环境
conda list    #查看安装的所有依赖包
conda create --name env_name python=3.x  #创建新的虚拟环境,指定python版本,env_name (虚拟环境名字,自行更换)
conda activate env_name    #激活虚拟环境
conda deactivate  #退出虚拟环境
conda env remove -n my_env #删除虚拟环境 
conda create -n newenv --clone old_env  #克隆虚拟环境

先用命令查看虚拟环境,安装完miniconda后,会有个基础环境base。基础环境(务必保证设置miniconda中自带的python解释器为系统默认的),直接在终端操作,就是对基础环境的操作。

终端查看安装的依赖包,这里列出来的其实是基础环境base中的依赖。用了conda 和 pip 两种方式,更推荐pip安装依赖。

创建虚拟环境 ,打开终端,输入创建虚拟环境命令,-y表示直接同意,不在询问。

查看虚拟环境 ,可以看到刚才创建的myenv虚拟环境已经存在了。

如何进入该虚拟环境呢?激活该虚拟环境,即可进入到该虚拟环境内,接下来的查包,装包都是在该虚拟环境里,相当于一个独立的容器。

退出虚拟环境 

删除虚拟环境

克隆虚拟环境,顾名思义,复制现有的虚拟环境,生成一个新的虚拟环境。下面克隆命令只存在于同一台机器上。

conda create -n newenv --clone myenv

 

2、pip安装依赖

安装命令

#安装依赖包
pip install 包名 
#卸载依赖包 
pip uninstall  包名

这里贴出几个比较常见的国内镜像源,安装依赖用镜像源速度会快很多。

清华:https://pypi.tuna.tsinghua.edu.cn/simple/
豆瓣:http://pypi.douban.com/simple/
中科大:https://pypi.mirrors.ustc.edu.cn/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/

如果只想临时使用镜像源,直接在包名后面加上 -i  镜像源地址,torch安装示例如下

pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple/

如果你想将某个镜像源设置为pip的默认源,即设置成功后,每次pip安装时无需加上 -i 镜像源的操作了,默认是自带的。

windows系统下,一般在 C/user/admin(administrtor) 下有个pip目录,如果没有可新建一个,在pip 目录下,创建一个pip.ini的配置文件,将下面指令复制到配置文件中即可。

[global]
timeout=60
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
extra-index-url=https://mirrors.aliyun.com/pypi/simple, https://mirrors.cloud.tencent.com/pypi/simple,
https://mirrors.bfsu.edu.cn/pypi/web/simple, https://mirrors.huaweicloud.com/repository/pypi/simple, https://mirrors.cloud.tencent.com/pypi/simple

如果想检查下配置是否成功,可以装一个包试试。 

或者用命令查看配置

pip config list

 

如果想查看虚拟环境中,都安装了那些包,以及包的位置

conda activate env_name #激活环境
pip list  #查看安装的所有依赖包
pip show torch  #查看某一个包,会返回包的具体位置

综上,讲述了两种可用于执行python语言的环境。

一种是直接安装解释器,在该解释器下安装依赖包。这种方式虽然占用磁盘空间不多,但是只有一种环境,不适合多项目的开发。

另外一种则是使用miniconda工具,该工具可创建多个虚拟环境,每个虚拟环境内,都可以根据项目对版本的需求,安装python 解释器和 依赖包,并且多个虚拟环境独立管理。

四、多用户机制

“多用户“指的是在同一个操作系统上有多个用户账号,每个用户可能拥有不同的权限和需求。在windows系统下,多用户操作系统中,不同用户可能共享同一台计算机,但各自有自己的用户目录和配置。

典型场景:

  • 企业办公电脑:多个员工共享同一台工作站
  • 学校实验室:不同学生使用同一台计算机
  • 服务器:多个开发者通过SSH访问同一台服务器

1、python多用户机制

 python通过三层隔离机制,实现多用户支持

系统级安装(system level):

        路径:Windows,C:\Program Files\PythonXX\Lib\site-packages

        权限:需要管理员权限

        影响范围:所有用户可见

用户级安装(User level):

        路径:Windows,C:\Users\<用户名>\AppData\Roaming\Python\PythonXX\site-packages

        权限:普通用户可用 

        影响范围:仅当前用户可见

2、用户站点配置

用户站点配置是python的一个重要特性,它允许用户在没有系统管理员权限的情况下,安装和管理python包。

python -m site  #查看用户站点信息

以系统默认的python解释器为例,如下图

 sys.path 是python解释器搜索模块的路径列表,按搜索顺序排列。

  • 其中,”C:\\Users\\Administrator“ 表示当前工作目录(你运行python命令的目录)

USE_BASE:C:\\Users\\Administrator\\AppData\\Roaming\\Python' (doesn't exist)

  • 用户安装python包的基础目录

USER_SITE:C:\\Users\\Administrator\\AppData\\Roaming\\Python\\Python39\\site-packages' (doesn't exist)

  •  用户级别的site-packages具体路径

ENABLE_USER_SITE:True

  •  关键设置:启用用户站点目录。
  • 这意味着python会搜索并允许安装包到用户目录

3、用户目录下的包

前面内容是为了下面的问题做准备的。

因为,最近在捣鼓环境过程中,发现一个问题,无论在何种情况下,装包时加上--user,会默认将包安装在用户目录下,windows系统下默认:

C:\Users\<用户名>\AppData\Roaming\Python\PythonXX\site-packages

pip install --user 包名

 这是在我本机上,系统默认在python=3.7.8解释器下,我使用--user安装了pyyaml包

 另外,这是在conda创建的虚拟环境ceshi下,执行--user安装pyyaml包

所以,无论是用python解释器,还是anaconda工具。当然,在anaconda下,无论是base环境,还是虚拟环境下,只要加上--user后,均会将包安装在用户目录下。

这样会有产生什么问题呢?

假如我在ceshi环境下,安装了项目所需依赖,此时在本机上,项目能跑通了。 如果换个机器呢,一般会将ceshi虚拟环境中依赖导出,安装到新机器上。

conda activate env_name  #激活环境
pip freeze > requirements.txt  #生成环境中的依赖文件

这次我就碰到了一个问题,在新机器上安装原环境ceshi中的所有依赖包,但项目运行时提示缺少包 pyyaml。

兜兜转转,去捋了捋原因。发现是这样的,原机器上,虚拟环境‘ceshi’上,pip show pyyaml,并没有这个包,但确实项目在该虚拟环境下能运行。

退出该虚拟环境,pip show pyyaml时,发现该包存在,且在c盘用户目录下(同上),觉得很不对劲,就算在base环境中,也应该在D盘下的miniconda中啊。

那为啥在‘ceshi’虚拟环境下,调用pyyaml包时,会直接用用户目录下的包呢?此时,就用到了用户站点配置内容,sys_path中的多路径,其实就是找包模块时,按照上述存在的路径去寻找。所以这也是在原机器上,项目用到的pyyaml包其实是用户目录下的包,我导出'ceshi'下的包,并没有该包。

pip freeze --user > user_requirements.txt  #导出用户目录下的包

这里,新加一个内容,创建虚拟环境时,隔离conda的base基础环境包 

conda create --name ceshi --no-base-packages python=3.8  #确保隔离base包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值