PyCharm 虚拟环境和 Anaconda 环境有什么区别?

2024-04-28

当我在 PyCharm 中创建新项目时,它会创建一个新的虚拟环境。我读到,当我执行Python脚本时,它们是使用此环境中的解释器而不是系统环境来执行的。因此,如果我需要安装一些软件包,我只能将它们安装在这个环境中,而不是在系统环境中。这很酷。

我还读过有关 Anaconda 环境的内容。当我创建一个新的 Anaconda 环境时,它会创建一个除系统环境之外的新环境。对于我的项目,我可以使用此环境并仅在此处安装所需的软件包,而不是在主系统环境中安装。

现在,我的问题是 PyCharm 创建的虚拟环境和 Anaconda 创建的环境有什么区别? PyCharm 创建的虚拟环境约为 15-20MB,而 Anaconda 创建的虚拟环境为 90MB。所以,一定是有区别的。另外,我还了解到我可以配置 PyCharm 以使用 Anaconda 环境解释器。

那么,PyCharm 和 Anaconda 创建的环境有什么区别呢?


我必须澄清一下anaconda只是一个集合。真正的环境管理者是conda. Here https://conda.io/miniconda.html is miniconda。它只包含管理环境的必要部分,而不是完整的anaconda收藏。

conda不仅仅是一个简单的 Python 包管理器,而是一个系统范围的包管理器。它将帮助您轻松安装软件包。一个典型的例子是安装numpy在 Windows 上。没有conda,这确实很困难,因为它需要一个很难获得的特定的 C 编译器。但与conda,你可以安装numpy只需一个命令conda install numpy。它将自动解决编译器问题和 C 依赖关系。


回到你的问题,当你在 Pycharm 中创建一个 env 时,它会询问你要创建哪个 env:Virtualenv Environment, Conda Environment, or Pipenv Environment。对于我来说,我通常会选择Pipenv Environment因为此环境将绑定到当前项目并可以生成锁定文件。

在这种情况下,我想你现在可以理解了:不存在名为“created by PyCharm”或“Anaconda”的环境。只有名为“由 Virtualenv、Conda 或 Pipenv 创建”的环境。而 Pycharm 只是使用并包装了其中之一。


那么有什么区别Conda Environment and Virtualenv Environment(Pipenv Environment本质上是一个Virtualenv Environment与复杂的pip)?差异来自于它们的不同目的。

Conda Environment通常适用于“Python 用户”。他们使用Python作为工具来完成一些其他工作,例如网络爬虫、数据挖掘和图像处理。他们对 Python 知之甚少(因为他们不需要知道)所以conda尽可能自动。他们的任务可以位于计算机中的任何位置,因此创建的环境conda位于用户范围的目录中。他们有时需要不同的Python版本,这可以在conda但不是virtualenv.

Virtualenv Environment通常适用于“Python 开发人员”。他们使用 Python 来构建应用程序或包。创建的环境Virtualenv通常位于当前项目的目录中。因此,您可以为每个应用程序创建一个环境并轻松管理依赖项。

总结:

Conda Environment:

  1. 不仅管理 Python 包,还管理不同的 Python 版本和系统范围的依赖项。
  2. Env 位于用户范围的目录中。
  3. 更少的环境。

Virtualenv Environment:

  1. 管理 Python 包。主要目的是分离每个应用程序的依赖关系。
  2. 环境通常位于项目范围的目录中。 (虽然pipenv默认情况下在用户范围目录中创建 env,很多人认为在项目目录中应该是默认的。)
  3. 更多环境。(每个应用程序都有一个新环境)

对于我来说,我同时使用它们。我用conda管理不同的Python版本并使用pipenv管理我的应用程序的依赖关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyCharm 虚拟环境和 Anaconda 环境有什么区别? 的相关文章

随机推荐

  • 在列名中使用保留字

    这是一些简单的代码 但我只是不知道为什么我不能使用这个词作为表的实体 CREATE TABLE IF NOT EXISTS users key INT PRIMARY KEY NOT NULL AUTO INCREMENT username
  • Powershell 按多个属性分组

    我试图确定是否有更简单的方法来编写 Powershell 函数 该函数按多个属性对数组进行分组并对组中指定的属性求和 类似于以下内容 Ungrouped data ID ID2 Value A A1 100 A A2 200 A A2 30
  • Android Oreo 上的操作系统阻止了地理围栏转换 PendingIntent

    这只发生在 Android Oreo 上 我正在使用 Play 服务 11 4 2 我正在使用 GeofencingClient 和 addGeofences 方法将地理围栏注册到正在处理地理围栏转换的 IntentService 中 并将
  • 在 Javascript 中获取类的所有实例

    我以为这个问题已经有了答案 但我似乎找不到答案 如何在 Javascript 中的此类的所有实例上运行特定的类方法 这必须在我不知道实例名称的情况下完成 我想我可以在类中使用某种静态变量来存储所有实例 但这在 JS 中似乎不存在 那么如何在
  • 在 Angular dart 上设置全局 Http 请求标头

    如何配置 Http 服务 向调用添加标头 我尝试以下方法 class GlobalHttpHeaders static setup Injector inj HttpDefaultHeaders http inj get HttpDefau
  • 如何在表单数组中添加无效的表单控件而不影响其功能

    我想创建一个动态表单 将表单控件 必需的表单控件 添加到表单数组中 表单控件无效 因为它需要由用户填写 为空 但是当我添加表单控件时 出现错误 ExpressionChangedAfterItHasBeenCheckedError 表达式在
  • 如何使用 Moq 返回数据或值列表?

    谁能告诉我如何使用 Moq 框架使用模拟对象返回数据列表并将返回的数据列表分配给另一个 List 变量 public class SomeClass public virtual List
  • 如何在 Python 3.2 程序中优雅地包含 Python 3.3 from None 异常语法?

    我正在尝试重新引发异常 以便为用户提供有关实际错误的更好信息 Python 3 3 包括PEP 409 http www python org dev peps pep 0409 它添加了raise NewException from No
  • 获取 Bash 和 KornShell (ksh) 中命令的退出代码

    我想写这样的代码 command some command safeRunCommand command safeRunCommand cmnd 1 cmnd if 0 then printf Error when executing co
  • 如何使用相机谷歌地图 xcode 移动标记(图钉)

    我在我的应用程序中使用谷歌地图 API 我的应用程序中有两个按钮 第一个按钮在我的地图中添加一个标记 图钉 现在我想要第二个按钮将添加的图钉水平移动到页面中心 并使其移动到页面顶部的 25 我希望相机 用户正在查看的区域 也移动它 这是我的
  • 使用 python 从 XSD 文件创建特定的 XML 文件

    我有一个现有的 xsd 架构 并且需要创建 希望使用 Python 带有一些特定输入的 XML 文件 最好的方法是什么 我尝试了 Element Tree 和 xmlschema 但我无法判断它们是否允许从已知的 XSD 架构开始生成 XM
  • 您应该通过属性访问同一类中的变量吗?

    如果您有一个获取和设置实例变量的属性 那么通常您总是使用该类外部的属性来访问它 我的问题是你也应该在课堂上这样做吗 如果有的话 我总是使用该属性 即使是在班级内 但我想听到一些支持和反对的论据 以确定哪个是最正确的以及为什么 或者这只是项目
  • 使 HTML5 视频海报与视频本身大小相同

    有谁知道如何调整 HTML5 视频海报的大小 使其适合视频本身的确切尺寸 这是一个显示问题的 jsfiddle http jsfiddle net zPacg 7 http jsfiddle net zPacg 7 这是代码 HTML
  • Console.ReadLine() 末尾没有换行符?

    问题很简单 当我使用 Console ReadLine 控制台上打印的下一个内容将在下一行 有什么办法可以继续打印该行吗 提前致谢 请检查 控制台 Read 这不会导致新行或换行
  • MySQL 监听通知等效项

    是否有相当于 PostgresQL 的notify http www postgresql org docs 9 1 static sql notify html and listen http www postgresql org doc
  • 如何在 C# 中将 IEnumerable 转换为 Enum?

    我已将多个字符串解析为枚举标志 但看不到将它们合并为单个枚举位字段的巧妙方法 我使用的方法循环遍历字符串值 然后 将值转换为 Enum 对象 如下所示 Flags public enum MyEnum None 0 First 1 Seco
  • Spring - 使用 new 是一种不好的做法吗?

    正在创建对象by hand 即使用new操作员而不是注册Springbean 和使用依赖注入被认为是不好的做法吗 我的意思是 确实Spring IoC容器必须了解应用程序中的所有对象吗 如果是这样 为什么 你希望 Spring 创建 bea
  • dask groupby 不合并分区

    我有一组数据 我想要对其进行一些简单的 groupby count 操作 但我似乎无法使用 dask 来完成此操作 我很可能不理解 dask 中执行 groupby reduce 的方式 特别是当索引位于分组键中时 所以我将用玩具数据来说明
  • 当父类也实现 IDisposable 时,在子类上实现 IDisposable

    我有一个父类和子类都需要实现IDisposable 应该在哪里virtual and base Dispose 通话发挥作用 当我刚刚覆盖Dispose bool disposing 打电话 说我实现了感觉真的很奇怪IDisposable没
  • PyCharm 虚拟环境和 Anaconda 环境有什么区别?

    当我在 PyCharm 中创建新项目时 它会创建一个新的虚拟环境 我读到 当我执行Python脚本时 它们是使用此环境中的解释器而不是系统环境来执行的 因此 如果我需要安装一些软件包 我只能将它们安装在这个环境中 而不是在系统环境中 这很酷