【问题标题】:PyCharm terminal doesn't activate conda environmentPyCharm 终端不激活 conda 环境
【发布时间】:2018-08-02 03:33:42
【问题描述】:

我在 Windows 的默认位置有一个 conda 环境,即C:\ProgramData\Anaconda2\envs\myenv。此外,按照建议,conda 脚本和可执行文件不在 %PATH% 环境变量中。 我在 pycharm 中打开了一个项目,并将 python 解释器指向 C:\ProgramData\Anaconda2\envs\myenv\python.exe 并且 pycharm 似乎与 python 控制台、运行环境和调试模式中的环境很好地配合。

但是,当打开终端时,环境没有被激活(我确保激活环境的复选框被选中)。需要明确的是 - 当我对 virtualenv 做同样的事情时,终端确实会毫无问题地激活环境。

以下是我尝试过但没有奏效的几件事:

  • 将激活脚本从anaconda文件夹复制到环境文件夹
  • 将anaconda文件夹中的activate脚本复制到环境下Scripts文件夹中
  • 从 virtualenv 复制了一个激活脚本(与激活环境相同的脚本)
  • 将 anaconda 文件夹添加到路径中

这些都不起作用。 一旦终端打开,我可以手动激活环境没有问题,但是如何自动激活呢?

【问题讨论】:

    标签: python windows pycharm anaconda


    【解决方案1】:

    我遇到了同样的问题并使用了这个解决方案。

    1. 转到File -> Settings -> Tools -> Terminal

    2. Shell path 中的值替换为cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat your_environment_name

    如果我在 C:\Anaconda3 中安装 Anaconda 并有一个名为 myenv 的环境,那么我的设置将如下所示:

    【讨论】:

    • 谢谢!这是一个很好的解决方法,但如果我有多个用于测试目的的环境,它将不起作用。另外,对于 linux/mac,当然需要做一些小的改动
    • 我需要做更多的事情来让它工作吗?这会在打开终端时激活环境,但在尝试使用“运行配置”时不会。
    • @Daniel 你需要configure your project interpreter。更改 shell 路径不会影响您的运行/调试配置,它是一个单独的设置。
    • 如果我在Pycharm中同时拥有conda envvirtualenv env,我该怎么办,似乎根本不认识virtualenv env
    • 它会起作用的!外壳路径:powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1'
    【解决方案2】:

    这似乎是一个已知的issue

    【讨论】:

    • 仅供参考:该问题已在 2019.1 版中得到修复。
    • 尚未修复/重绘,在 2021.1.3 版本中
    【解决方案3】:

    如果有人想知道 Linux 的设置,这里是如何做到的。在您的家dir 中创建一个文件.pycharmrc。打开文件并添加以下内容

    source ~/.bashrc
    source ~/anaconda3/bin/activate your_env_name 
    

    现在转到 Pycharm File > Settings > Tools > Terminal > Shell path/bin/bash --rcfile ~/.pycharmrc 替换你的 shell 路径。

    现在,当您打开终端时,指定的 conda env 将激活。

    【讨论】:

    • 谢谢!这适用于 PyCharm 2020.2.3 (PopOS! 20.04 LTS)
    • 适用于 Mac OSX 上的 2021.3.2 CE
    【解决方案4】:

    这是我针对 MacOS 或 Linux 用户的解决方案:

    首先,将其添加到您的 ~/.bash_profile~/.zshrc 取决于您的 shell。记得在 conda 初始化之后再放:

    ##### Activate conda env ######
    [[ -n $CONDA_ENV ]] && conda activate $CONDA_ENV
    

    然后转到您的 PyCharm 设置,转到工具 -> 终端 在项目设置中,将CONDA_ENV=yourenv 添加到您的环境变量中。

    yourenv 是您的 conda 中用于此特定项目的环境名称。

    【讨论】:

    • 这是一个好主意,但是:(1) 首先我必须运行一次 conda init bash (2) 我必须在建议的行之前添加 conda deactivate,否则 conda 会激活 @987654329 @env 默认情况下 (3) -n 应该不是必需的。
    • 这在 Windows 10 上非常适合我,PyCharm 的终端指向 GitBash
    • 在 PowerShell 上,将 conda activate $env:CONDA_ENV 添加到您的 profile.ps1 以激活 conda 环境
    【解决方案5】:

    Windows 解决方案

    转到Settings -> Tools -> Terminal
    Shell path 设置为:

    1. 对于powershell(我推荐这个):
      powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1'
    2. 对于cmd.exe:
      cmd.exe "C:\tools\miniconda3\Scripts\activate.bat"

    PyCharm 会在终端自动改变环境
    PS:我正在使用我的路径到 miniconda,所以用你的替换它

    【讨论】:

      【解决方案6】:

      扩展 darksinge 的答案以适应 conda>=4.4 和多个环境,如果 1)您的 conda 环境和项目共享相同的名称,并且 2)您将项目保存在同一目录中,则可以使用此解决方法:

      cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat C:\path\to\Anaconda3 & activate %cd:C:\path\to\project\parent\directory\=%

      最后一部分 (%cd:C:\path\to\project\parent\directory\=%) 应该从当前工作目录推断项目名称。例如,我将我的项目保存在Z:\,所以%cd:Z:\=% 返回我的项目名称。你可以阅读更多:How to replace substrings in windows batch file

      【讨论】:

      • 我目前正在pycharm中寻找一个特殊的名称/变量,以便在设置中使用项目名称(例如cmd.exe "/K" C:\path\to\Anaconda3\Scripts\activate.bat C:\path\to\Anaconda3 & activate $project_name。尚未找到
      • 感谢这给了我尝试 "C:\Program Files\Git\bin\bash.exe" --login && conda activate myenv 的 Git Bash 的想法,它成功了!
      【解决方案7】:

      找到了解决办法。问题是我们在开始一个新项目时一直在 Pycharm 中创建 conda 环境。

      这是在/Users/<username>/.conda/envs/<env-name> 位置创建的。

      例如/Users/taponidhi/.conda/envs/py38.

      而是使用conda create --name py38 从终端创建环境。 这将在/opt/anaconda3/envs/ 创建环境。

      之后,当开始一个新项目时,从现有环境中选择这个环境。一切正常。

      【讨论】:

        【解决方案8】:

        我使用的是 OSX,zshell 已经成为 2020 年的默认 shell。 我遇到了同样的问题:我的 conda 环境在 pycharm 的终端中无法运行。

        File -> Settings -> Tools -> Terminal.默认shell路径配置为/bin/zsh --login

        我在一个单独的 OSX 终端上测试了 /bin/zsh --login 以某种方式弄乱了 $PATH 变量。 conda activate 继续在末尾而不是开头添加 conda env 路径。因此,由于 PATH 字符串混乱,默认的 python (2.7) 总是优先。这个问题与 pycharm 无关(只是 zshell 与 --login 的行为),

        我从脚本路径中删除了--login 部分;只是 /bin/zsh 有效(在此更改后我必须重新启动 pycharm!)

        【讨论】:

          【解决方案9】:

          结合这里的几个答案,我想出了一个 Windows 中 Git Bash 的解决方案:

          1. 转到File -> Settings -> Tools -> Terminal

          2. 将“Shell path”中的值替换为

          "C:\Program Files\Git\bin\bash.exe" --login && conda activate myenv
          

          【讨论】:

            【解决方案10】:

            针对windows用户基于linux方案解决。

            1. 在项目根目录(重要)中创建一个批处理脚本(我的名为 env_win10.bat)并粘贴以下内容:
            @echo OFF
            :: conda activation path
            set conda_activate_path=C:\ProgramData\Anaconda3\Scripts\activate.bat
            
            :: environments for this project on several of different computers
            set env_path=C:\Users\GiladEiniKbyLake\.conda\envs\bin
            set env_basename=bin
            
            if exist %env_path% (
                echo activating env: %env_path%
                %conda_activate_path% %env_basename%
            ) else (
                echo cant find path %env_path%
                echo activating base interpreter...
                %conda_activate_path%
            )
            
            1. 在 bat 文件中编辑以下路径:
            • anaconda 的 activate.bat 的 conda_activate_path
            • 环境文件夹的env_path
            • env_basename 到环境名称(不知道如何在批处理脚本上获取 os.path.basename())
            1. 在pycharm上转到Tools->Terminal->shell并进入
            cmd.exe "/K" ./env_win10.bat
            
            1. 奖金:
            • 在桌面上创建一个快捷方式并插入pycharm exe路径并在您的项目名称中命名。例如wizzi_utils。
            • 右键单击属性并在目标中添加项目的路径。例如
            "C:\Program Files\JetBrains\PyCharm Community Edition 2018.2.4\bin\pycharm64.exe" "D:\workspace\2021wizzi_utils"
            
            • 现在您的项目有了快捷方式

            通知

            您现在必须对在 pycharm 中打开的每个项目都执行此操作,因为 pycharm 将在项目的根文件夹中查找“env_win10.bat”。好消息是您需要在每个项目中执行一次。建议将其放在“.gitignore”上,并在每个用户的计算机上创建此批处理脚本。如果您确实希望它为所有用户组合并上传到 git 怎么办?只需添加更多路径变量。这是我在笔记本电脑和台式机上编写的一个项目示例:

            @echo OFF
            :: conda activation path
            set conda_activate_path=C:\ProgramData\Anaconda3\Scripts\activate.bat
            
            :: environments for this project on several of different computers
            set laptop_env_path=C:\Users\gilad\.conda\envs\bin
            set laptop_env_basename=bin
            set desktop_env_path=C:\Users\GiladEiniKbyLake\.conda\envs\bin
            set desktop_env_basename=bin
            
            :: checking if we are on the 1st option
            if exist %laptop_env_path% (
                echo activating env: %laptop_env_path%
                %conda_activate_path% %laptop_env_basename%
            ) else (
                :: checking if we are on the 2st option
                if exist %desktop_env_path% (
                    echo activating env: %desktop_env_path%
                    %conda_activate_path% %desktop_env_basename%
                ) else (
                    :: fail safe - just activate conda base interpreter
                    echo cant locate any of the paths:
                    echo    %laptop_env_path%
                    echo    %desktop_env_path%
                    echo    activating base interpreter...
                    %conda_activate_path%
                )
            )
            

            【讨论】:

              【解决方案11】:

              当您默认禁用激活 (base) 环境时,可能会发生这种情况,如下所示:

              conda config --set auto_activate_base false 
              

              要解决此问题,请重新激活该功能。

              conda config --set auto_activate_base true 
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-04-30
                • 1970-01-01
                • 1970-01-01
                • 2016-06-08
                • 1970-01-01
                • 1970-01-01
                • 2022-11-23
                相关资源
                最近更新 更多