簡體   English   中英

PyCharm 終端沒有激活conda環境

[英]PyCharm terminal doesn't activate conda environment

我在 windows 的默認位置有一個 conda 環境,即C:\ProgramData\Anaconda2\envs\myenv 此外,按照建議,conda 腳本和可執行文件不在%PATH%環境變量中。 我在 pycharm 中打開了一個項目,並將 python 解釋器指向C:\ProgramData\Anaconda2\envs\myenv\python.exe和 pycharm 似乎在 python 控制台中的環境中運行良好,並在運行環境中調試。

但是,當打開終端時,環境沒有被激活(我確保激活環境的復選框被選中)。 要清楚 - 當我用 virtualenv 做同樣的事情時,終端確實可以毫無問題地激活環境。

以下是我嘗試過但沒有奏效的一些事情:

  • 將激活腳本從 anaconda 文件夾復制到環境文件夾
  • 將激活腳本從anaconda文件夾復制到環境下的Scripts文件夾
  • 從 virtualenv 復制了一個激活腳本(一個相同的激活環境的腳本)
  • 將 anaconda 文件夾添加到路徑

這些都不起作用。 終端打開后,我可以毫無問題地手動激活環境,但如何自動激活?

我遇到了同樣的問題並使用了這個解決方案。

  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 的設置,這里是如何做到的。 在您的主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 將激活。

這是我為 MacOS 或 Linux 用戶提供的解決方案:

首先,將其添加到您的~/.bash_profile~/.zshrc取決於您的 shell。 記得在 conda 初始化后放:

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

然后轉到您的 PyCharm 設置,轉到工具 -> 項目設置中的終端,將CONDA_ENV=yourenv添加到您的環境變量中。

yourenv是這個特定項目的conda中的環境名稱。

適用於 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,所以用你的替換它

Windows 和 Powershell

我使用了這里的答案和這個答案的部分答案,在帶有PowershellWindows上提出了以下解決方案

  1. 轉到文件 > 設置 > 終端
  2. 對於每個項目,在環境變量下添加以下內容。 對於每個項目,您需要將venv_name更改為您的虛擬環境名稱。
    • CONDA_ENV=venv_name
  3. 對於 shell 路徑,請使用以下內容。 您不需要為每個項目進行更改,因為它使用您在上一步中聲明的環境變量。 只需編輯 Anaconda/Miniconda 安裝的路徑即可。
    • powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\path\to\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate $env:CONDA_ENV "

擴展 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:\=%返回我的項目名稱。 您可以閱讀更多內容: 如何替換 Windows 批處理文件中的子字符串

找到了解決方案。 問題是我們在開始一個新項目時一直在從 Pycharm 中創建 conda 環境。

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

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

而是使用conda create --name py38從終端創建環境。 這將在/opt/anaconda3/envs/創建環境。

之后,當開始一個新項目時,從現有環境中選擇這個環境。 一切正常。

這是適用於 Windows * Pycharm 版本的工作解決方案:2022.1.3 Windows:11

打開 anaconda 提示符並鍵入conda init powershell注意突出顯示的 powershell 配置文件路徑 (C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1),然后復制它。

檢索 conda-hook powershell 配置文件

在 PyCharm 中打開項目並按 Ctrl+Alt+S 調出設置並導航到工具 > 終端。 在右側,在環境變量文本字段中,將新環境變量設置為CONDA_ENV=your_conda_env_name請注意,您必須正確提及您的 conda 環境名稱。 然后在 shell 路徑中,鍵入以下內容。

powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'path/to/conda-hook.ps1' ; conda activate $env:CONDA_ENV "

例如:

powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\ProgramData\Anaconda3\shell\condabin\conda-hook.ps1' ; conda activate $env:CONDA_ENV "

設置環境變量和 shell 路徑

應用並關閉設置,如果您打開了任何終端,請關閉所有終端,然后嘗試重新打開終端。 提到的 conda 環境應該會自動激活。 干杯!

我正在使用 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!)

混合了這里的幾個答案,我想出了一個 Windows 中 Git Bash 的解決方案:

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

  2. 將“Shell path”中的值替換為

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

為基於linux解決方案的windows用戶解決。

  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 文件中編輯以下路徑:
  • conda_activate_path 到 anaconda 的 activate.bat
  • 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%
    )
)

在 Windows & Pycharm 2022.1 和 conda 環境中遇到問題 我的解決方案是將默認的 Powershell 更改為 cmd shell

  1. 打開設置>工具>終端
  2. 將 Shell 路徑從“powershell.exe”更改為“cmd.exe” 在此處輸入圖像描述
  3. 確保選中“激活 virtualenv”復選框。

新終端使用配置的環境正確打開。

我遇到了同樣的問題並使用了這個解決方案。

  1. Go 到文件 -> 設置 -> 工具 -> 終端。

  2. 將 Shell 路徑中的值替換為

    powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& conda activate <yourcondaenvname>

當您默認禁用激活(base)環境時,可能會發生這種情況,如下所示:

conda config --set auto_activate_base false 

要解決此問題,請重新激活該功能。

conda config --set auto_activate_base true 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM