[英]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 做同樣的事情時,終端確實可以毫無問題地激活環境。
以下是我嘗試過但沒有奏效的一些事情:
Scripts
文件夾這些都不起作用。 終端打開后,我可以毫無問題地手動激活環境,但如何自動激活?
這似乎是一個已知問題。
如果有人想知道 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
中的環境名稱。
轉到Settings
-> Tools
-> Terminal
將Shell path
設置為:
powershell
(我推薦這個):powershell.exe -ExecutionPolicy ByPass -NoExit -Command "& 'C:\tools\miniconda3\shell\condabin\conda-hook.ps1'
cmd.exe
:cmd.exe "C:\tools\miniconda3\Scripts\activate.bat"
PyCharm 會在終端自動改變環境
PS:我正在使用我的路徑到 miniconda,所以用你的替換它
我使用了這里的答案和這個答案的部分答案,在帶有Powershell的Windows上提出了以下解決方案
venv_name
更改為您的虛擬環境名稱。
CONDA_ENV=venv_name
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),然后復制它。
在 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 "
應用並關閉設置,如果您打開了任何終端,請關閉所有終端,然后嘗試重新打開終端。 提到的 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 的解決方案:
轉到File -> Settings -> Tools -> Terminal
。
將“Shell path”中的值替換為
"C:\Program Files\Git\bin\bash.exe" --login && conda activate myenv
@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%
)
cmd.exe "/K" ./env_win10.bat
"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%
)
)
我遇到了同樣的問題並使用了這個解決方案。
Go 到文件 -> 設置 -> 工具 -> 終端。
將 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.