多个虚拟环境下,pip install到底默认把包安装到了哪里???


前面两节是废话,可直接跳到最后一节👉👈

虚拟环境是什么

我们知道python有很多package,这些包功能很强大,覆盖了机器学习、数据分析等各个领域,比如numpy、pandas、Pytorch、mathplotlib等。我们很多需求可以调用这些包来实现(会python,具体会什么?会调包呜呜呜)。
有时和同事合作开发一个项目时,要在自己电脑上运行别人写的代码,假设其.py文件import numpy,但是自己电脑没有安装numpy,这就会出现报错:

Traceback (most recent call last):
  File "analyze_data.py", line 5, in <module>
    import pandas as pd 
ImportError: No module named pandas

要解决这个报错很简单,安装需要的包即可解决。 但是如果一些包仅仅是这个项目需要,之后项目用不到,那么一个环境下安装了很多包不仅占电脑磁盘空间,还可能引起包之间的冲突;另外可能这个项目需要numpy的版本A,另一个项目需要numpy的版本B,版本间有冲突。
还有可能一个项目需要版本A的python解析器,但是另一个项目需要版本B的python解析器。这就需要所谓的虚拟环境。

虚拟环境是一种工具,用于在同一台计算机上管理多个独立的 Python 运行环境。每个虚拟环境都可以拥有自己独立的 Python 解释器和软件包集合,这使得用户能够在不同项目之间隔离开发环境,避免版本冲突和依赖问题。
通过创建虚拟环境,用户可以在同一台计算机上同时使用不同版本的 Python 和不同的软件包集合,而不会相互干扰。这对于开发多个项目、测试新软件包或者维护旧项目非常有用。虚拟环境可以帮助确保每个项目都能够运行在其所需的特定环境中,而不受其他项目的影响。

Conda是一个软件包以及虚拟环境管理器,可以单独使用,但是常常用Anaconda,其包含了conda虚拟环境管理器和各种软件包。Anaconda 是一个流行的开源发行版,专为数据科学、机器学习和科学计算而设计。它包含了许多常用的开源软件包,提供了强大的包管理系统和虚拟环境管理工具,使得用户能够轻松地进行数据分析、可视化、建模和开发工作。

  • 软件包管理:Anaconda 包含了大量常用的 Python 包和工具,如 NumPy, Pandas, SciPy, Matplotlib, Scikit-learn 等,这些软件包对于数据科学和科学计算至关重要;通过 Anaconda 的包管理系统,用户可以方便地安装、更新和管理这些软件包,而无需担心版本冲突或依赖关系;
  • 虚拟环境管理:Anaconda 提供了 conda 环境管理器,允许用户创建、管理和切换不同的 Python 环境;这使得用户可以在同一台计算机上同时使用不同版本的 Python 和不同的软件包集合,而不会相互干扰,有助于隔离不同项目的开发环境。

conda创建虚拟环境:

conda create --name myenv  # 默认python版本
conda create --name myenv python=3.8  # 用户指定python版本

激活虚拟环境:

conda activate env_name

退出当前虚拟环境:

conda deactivate  

这里可以用anaconda prompt输入指令。但是如果用系统的cmd和powershell,如果你之前从未初始化过 conda,你可能还需要运行以下命令来初始化你的 shell:

conda init cmd.exe    

—————————————————————
补充:我们常说的终端/命令行,有很多:shell、cmd、bash等等,它们的关系是:

  • Bash:

Bash 是一种 Unix shell 和命令语言,通常作为默认的 shell 在大多数 Linux 系统中使用。它是 GNU 项目的一部分,也被称为 Bourne Again Shell。Bash 提供了命令解释、变量、控制结构等功能,使用户能够与操作系统进行交互并执行命令。

  • Cmd:

Cmd 是 Windows 操作系统中的命令行解释器。它提供了一个命令行界面,允许用户通过输入命令来执行操作系统的命令和脚本。Cmd 也被称为命令提示符(Command Prompt)。

  • Shell:

Shell 是一个广泛的术语,用于描述操作系统提供的用户界面,允许用户与操作系统进行交互。它可以是命令行界面(如 Bash、Cmd),也可以是图形用户界面(GUI)。在 Unix 或类 Unix 系统中,“shell” 通常指的是命令行解释器,负责解释用户输入的命令并执行相应的操作。

总的来说,Bash 是一种特定类型的 shell,而 Cmd 是 Windows 中的命令行解释器。Shell 是一个更广泛的术语,用于描述用户与操作系统交互的界面,可以包括命令行界面和图形用户界面。

另外还有anaconda prompt,特定于anaconda的命令行解释器。要在不同的命令行中运行conda,需要conda init xxx(bash or cmd or 其他你需要的命令行)。
—————————————————————

pip是什么

pip 是 Python 的包管理工具,用于安装和管理 Python 包。它可以从 Python Package Index (PyPI) 下载并安装各种 Python 包,使得在 Python 环境中使用第三方库变得非常方便。pip也可以用于卸载、升级和管理已安装的包。pip 是 Python 的标准包管理工具,通常会随着 Python 的安装一起被安装。
每一个虚拟环境下,有对应的python.exe,选择一个虚拟环境执行.py文件时,就会用对用环境的python.exe进行编译执行,即选择使用该虚拟环境下对应的python版本;同时每个虚拟环境下会有对应的pip.exe(envs_name/Scripts/pip.exe),需要在对应环境安装包时,需要使用对应的环境下的pip.exe,这样才会安装到正确的虚拟环境目录中
在这里插入图片描述
在这里插入图片描述
我在anaconda安装目录下搜索了pip,发现不仅有pip还有pip3。GPT告诉我这是因为python3.版本和python2.版本上一些语法不兼容,pip3是针对python3的软件包管理工具。 我理解的是在创建虚拟环境时,安装python就会安装对应的pip,因此直接用pip install就好啦。

指定虚拟环境下安装包

pip install默认安装路径

我们安装需要的python软件包时,直接pip install xxx就行。但是当我们有多个虚拟环境时,在没有显式激活任何虚拟环境的情况话(即没有使用命令conda activate xxx(env_name)),pip install是默认调用base环境下的pip.exe安装需要的软件包,且将包安装在base环境下的Lib里。
在这里插入图片描述

指定虚拟环境安装软件包

上面截图其实已经给出了在特定虚拟环境下安装软件包的方法。直接pip install默认是安装到base环境,我们可以选择两种方式在指定的虚拟环境下安装软件包:

  • 使用conda激活虚拟环境:1、conda activate env_name激活环境;2、pip install xxx安装包
  • 进入虚拟环境下pip的目录:cd xxxxxx(对应虚拟环境下pip.exe所在目录),在该目录下执行pip命令,会调用该目录下的pip.exe,同时安装/卸载/更新等对应的目录是对应虚拟环境下的lib目录。

conda install xxx

conda 是 Anaconda 发行版中的包管理工具,它可以用于安装 Python 包以及其他软件包。它不仅限于 Python 包,还可以安装系统级软件包。

  • conda install 命令会安装包及其依赖项,并确保这些包与 Anaconda 发行版的兼容性。它会在 Anaconda 的环境中安装包,这意味着它可以管理整个环境的软件包依赖关系
  • 使用 pip install 时,你可以指定要安装的软件包及其版本,但它通常不会处理系统级软件包或整个环境的依赖关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值