【问题标题】:Python Virtual Environments ConfusionPython虚拟环境混乱
【发布时间】:2020-12-13 12:24:34
【问题描述】:

我已经使用 python 学习数据科学大约一年了。我已经对语法和模型创建感到非常满意。我专门使用 Google Colab 只是因为它很方便,而且我喜欢笔记本的风格。但是,我不明白的一件事是环境的东西。虽然我使用 Colab,但我的机器上确实有 python 和 anaconda,并使用以下格式安装了各种包:pip install (package name)。当我打开终端时,第一行以(base) 开头,当我在anaconda 导航器中检查Environments 选项卡时,似乎我将所有这些软件包安装到名为base (root) 的基本环境中?那正确吗?如果是这样,那么我的环境的名称是什么?与 venv 相比,基础环境是什么?

我问的原因是,如果我决定将来使用 IDE,我需要设置我的环境以能够运行包,对吗?

只是为了好玩,我想尝试使用 R 及其允许在 R 中使用 python 的 reticulate 包。如this question 的回答中所述,我需要设置我的虚拟环境,然后才能在 R 中使用 python。我的虚拟环境会是base (root)吗?

对于所有这些环境问题,我完全是个菜鸟。同样,我刚刚打开我的终端并为我安装的所有软件包输入pip install (package name)。提前感谢您的帮助。

【问题讨论】:

    标签: python r anaconda virtualenv reticulate


    【解决方案1】:

    所以根据您的描述,听起来您计算机上的默认 Python 安装是通过 Anaconda 安装的。如果是这种情况,base 实际上将是您正在使用的 conda 虚拟环境的名称。

    虚拟环境可能很棘手,所以我将引导您了解我通常在这里做的事情。

    首先,您始终可以通过在 Mac/Linux 上使用 which 命令来检查您当前使用的是哪个 Python 安装,或者如果您使用的是 Windows,该命令可能是 @987654325 @(如果您使用的是 Windows,此答案可能会有所帮助:equivalent of 'which' in Windows。)

    (base) ➜  ~ which python
    /Users/steven/miniconda3/bin/python
    

    从上面可以看出,我默认的Python是通过Miniconda,它只是Anaconda的一个小版本。

    这意味着当您使用 pip 安装软件包时,这些软件包将安装到此 base conda 环境中。顺便说一句,您也可以将 which 命令与 pip 一起使用,以再次检查您使用的是当前环境中的 pip 版本:

    (base) ➜  ~ which pip
    /Users/steven/miniconda3/bin/pip
    

    如果您想查看当前安装的软件包列表,您可以使用pip freezeconda env exportpipconda 都是包管理器,如果您使用 Anaconda Python 安装,那么您(通常)可以使用其中任何一个将包安装到您的虚拟环境中。

    (快速旁注:“虚拟环境”是一个可以以不同方式实现的通用概念。condavirtualenv 都是在 Python 中使用虚拟环境的方法。我也是一名数据科学家,并且我的所有虚拟环境都使用conda。)

    如果您想使用 conda 创建一个新的虚拟环境,这非常简单。首先,您可以立即创建环境并安装一些包,例如 pandas 和 matplotlib。然后你可以激活那个环境,检查你的python版本,然后去激活它。

    (base) ➜  ~ conda create -n my-new-environment pandas matplotlib
    (base) ➜  ~ which python
    /Users/steven/miniconda3/bin/python
    (base) ➜  ~ conda activate my-new-environment
    (my-new-environment) ➜  ~ which python
    /Users/steven/miniconda3/envs/my-new-environment/bin/python
    (my-new-environment) ➜  ~ conda deactivate
    (base) ➜  ~ which python
    /Users/steven/miniconda3/bin/python
    

    而且,如果您想查看当前可用的 conda 虚拟环境,可以运行 conda env list

    这是我一直参考的 conda 环境的文档:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

    希望对你有帮助!

    【讨论】:

    • 非常感谢您抽出宝贵时间回复。是的,我在 Mac 上并通过 Anaconda 安装了 python。我的 pip 和 python 与我们的位于同一个地方。为什么需要创建一个新的虚拟环境?我不是已经在基础环境中拥有了我需要的所有软件包吗?抱歉,我很难画出虚拟环境的概念。
    • @bismo -- 如果您的基础环境中已经具备所需的一切,那么您就可以开始了!我只是想向您展示如何创建新环境并切换到它们,以备您需要时使用。它还(对我而言)帮助我了解不同环境的工作方式。但是,是的,直接在您的 base 环境中工作没有问题,除非您需要在任何时候安装冲突的软件包版本。如果您曾经在一个不同的项目上工作,该项目需要与您当前拥有的版本相冲突的版本,那么您应该创建一个新的虚拟环境。
    • 啊,我明白了。谢谢你这么有帮助。最后一件事。当我尝试在 R 中使用 reticulate 激活我的环境时,我运行以下命令:library(reticulate)use_virtualenv("base"),但是当我尝试导入 pandas 时,我遇到了与上面链接的问题中个人所做的相同的错误。这可能是什么问题?
    • 如果您安装了 Anaconda python,请不要使用 pip。 conda 命令替换了 pip。像使用 pip 一样使用 conda。
    • @bismo -- 不幸的是,我对 R 没有太多经验,所以我不确定那里发生了什么或如何排除故障。您可能想了解 R 如何加载包以及它使用什么路径等。主要目标是弄清楚它使用的是哪个版本的 Python,以及它从哪个文件夹加载库。
    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2020-11-19
    • 2017-05-07
    相关资源
    最近更新 更多