python - 设置为使用带有VS Code和Integrated Git终端的anaconda时卡住

标签 python bash git anaconda conda

我想学习数据科学,因此使用了一些非常流行的Python模块,例如Pandas,Matplotlib,Numpy等。因此,我清理了安装的Anaconda,现在将其用作我的默认Python解释器,还使用Conda来安装软件包和制作虚拟环境。 。我使用VS Code作为日常文本编辑器。但是,在Anaconda Python解释器中使用VS Code中的集成Git终端时,我遇到了一些问题。

我面临几个问题。我看到的第一个问题是何时使用CMD运行Python。如果我在cmd中键入并输入python,则会出现anaconda提供的Python解释器。但我也得到警告:

Warning: This Python interpreter is in a conda environment, but the environment has not been activated. Libraries may fail to load. To activate this environment please see https://conda.io/activation



我没想到会得到这个输出。无论如何,VS代码中还有另一个问题。但是首先,我想提一提的是,在安装Anaconda时,我已选中“添加到PATH”,因此那里没有问题。现在,当我在VS Code中打开新终端时,将自动运行C:/Users/User/Anaconda3/Scripts/activate,然后运行conda activate base。但是,如上所述,当conda activate base自动运行时,我收到一个CommandNotFoundError。它指出Your shell has not been properly configured to use 'conda activate'. If using 'conda activate' from a batch script, change your invocation to 'CALL conda.bat activate'
然后,我被告知要初始化我的shell,所以我做了conda init bash,但还是没有运气。这使我开始谈论.bash_profile。我认为它必须与此bash配置文件有关。无论如何,这就是我的bash个人资料中的内容

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
eval "$('/C/Users/User/Anaconda3/Scripts/conda.exe' 'shell.bash' 'hook')"
# <<< conda initialize <<<


只是问题的摘要:
  • 运行Anaconda Python解释器
  • 时CMD中出现意外警告
  • 在VS Code中打开新终端时,自动运行Anaconda脚本并使用conda激活基础
  • Conda初始化bash无法帮助

  • 附言:我尝试在CMD和Git Bash中使用conda activate [env_name],它们可以正常工作。换句话说,Anaconda和Conda可以在VS Code终端之外完美地工作。

    最佳答案

    我已经弄清楚了答案,并想在这里分享。首先,在编写问题时,我正在使用Git Bash作为VS Code中的终端(我仍在使用它)。因此,问题在于,当我在Git Bash或VS Code Terminal中运行命令conda init bash时,Conda基本上只是将用于激活Conda环境的命令放在.bash_profile中,因为它是在登录Bash期间获取的。但是,VS Code中的集成Terminal是Git Bash session 的子 shell 。这就是为什么.bash_profile仅在主Bash session 期间获得的原因,而不是VSt中提供了.bash_profile的原因。 .bashrc文件是在VS Code中创建终端 session 时来源的文件。因此,您实际需要做的是将.bash_profile放入conda init bash的代码粘贴到.bashrc文件中,并自动将.bash_profile源设置为.bashrc文件。

    因此,总而言之,使用conda init bash会将conda命令放入.bash_profile中,通常由Git Bash来提供,但是VS Code Git Bash终端将使用.bashrc

    因此,您可以将代码从.bash_profile剪切并粘贴到.bashrc(如前所述),或者如果需要,只需遵循以下步骤:将此代码放在.bash_profile中:

    if [ -f ~/.bashrc ]; then
        source ~/.bashrc
    fi
    

    在您的.bashrc中,输入以下代码:
    # >>> conda initialize >>>
    # !! Contents within this block are managed by 'conda init' !!
    eval "$('{path_to_your_conda.exe}' 'shell.bash' 'hook')"
    # <<< conda initialize <<<
    # You can get conda.exe path by using `which conda` in Git Bash
    

    现在,当您在VS Code Terminal中打开Git Bash session 时,可以使用conda activate env_name激活您拥有的任何环境。

    现在一切都应该在VS Code终端中按预期工作,但我想进一步详细说明。如果需要,您可以跳过conda init bash流程(不建议这样做,请继续阅读以获取其他知识,但请仅遵循上述步骤)。这是conda 4.4.0中引入的功能。到那时为止,激活conda环境的方法是使用source activate,但该命令不是跨平台的,这意味着该命令不能在Windows之类的OS中使用。
    因此,他们通过引入诸如conda activate env_name之类的命令进行了此更改,以便尽管有OS平台,conda环境也变得更加易于使用。
    conda activate也具有其他优点。这直接来自他们的release docs:

    conda activate: The logic and mechanisms underlying environment activation have been reworked. With conda 4.4, conda activate and conda deactivate are now the preferred commands for activating and deactivating environments. You'll find they are much more snappy than the source activate and source deactivate commands from previous conda versions. The conda activate command also has advantages of (1) being universal across all OSes, shells, and platforms, and (2) not having path collisions with scripts from other packages like Python virtualenv's activate script.



    我使用this question作为引用。查看更多信息。

    话虽如此,即使您使用的是gitt_rstrong,即使在VS Code Git Bash终端中,如果使用,使用source activate env_name仍然可以工作source activate env_name不需要事先设置或配置。但是强烈建议您仅使用conda init设置所有内容,然后使用conda activate env_name

    [注意] :在Windows上查找和修改上述.bashrc.bash_profile通常不像在Linux上那样简单。但是可以这样轻松完成:

    不用说,但是,您应该已经安装了Git Bash。据我所知,安装Git Bash应该会自动创建.bashrc.bash_profile或两者都创建。这些文件称为“点文件”(因为它们以点开头),默认情况下,这些文件在大多数OS上以及在Windows上都是 stash 的。如果它们是由Git Bash在您的系统上自动创建的,则很可能将它们放置在您的主目录中。 Windows上的主目录是C:\Users\<you>\。话虽如此,请遵循以下步骤:
  • 打开Git Bash并使用以下命令转到您的主目录:cd。只需键入此命令,您就会在您的主目录
  • 输入以下命令:ls -a,您将看到所有文件,甚至是 stash 文件。查找.bash_profile.bashrc。两者都应该存在。如果是这样,则准备按照上述说明进行操作。但是,如果其中一个不存在或两者都不存在,请使用以下命令创建它们:touch .bashrc && touch .bash_profile。现在,当您再次键入以下内容时,您应该会看到这些文件:ls -a
  • 就是这样。现在您有了.bashrc.bash_profile,您可以按照上面的说明进行操作。另外,要更快地访问这两个文件,请使用VS Code这样打开它们:code ~/.bashrccode ~/.bash_profile。现在,按照说明修改这两个文件。

  • 在问题中,我还谈到了自动激活Conda环境的VS Code。 VS Code这样做没有问题,因为这是默认行为。
    我将其误解为问题。但是,如果有人希望阻止VS Code自动执行此操作,则建议您尝试在用户设置中进行设置:
    "python.terminal.activateEnvironment": false

    关于python - 设置为使用带有VS Code和Integrated Git终端的anaconda时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560017/

    相关文章:

    linux - Bash 脚本使用其中的变量执行 wget

    git 应用 : Ignore non-leading/trailing whitespace

    git - 确定 merge 是否将通过快进解决

    python - 在 pygame 中(或者甚至在一般的 python 中),我将如何创建一个在播放声音时不断执行的循环?

    python - 使用样本,将函数应用于大量列子集

    python - manage.py runserver 不终止

    linux - Linux 中的输出格式

    python - 是否有 git Shortlog 的 python 接口(interface)?

    python - 如何将 python 库安装到拉取的 docker 镜像中?

    python - 将字符串与python中的数字0-9匹配