每当我在项目文件夹中启动 Powershell 会话时,如何激活 conda 环境?
How can I activate a conda environment whenever I start a Powershell session in a project folder?
我使用 Anaconda environments 来管理我的 Python 安装。
我将 Python 项目组织在文件夹中;每个文件夹都包含一个项目的代码和一个文件 environments.yml
,该文件指定 conda 环境应该 运行 特定 Python 项目的包。
我通常是这样开始一个项目的:
- 我导航到项目文件夹(在 Total Commander 中,但我认为这无关紧要)。
- 我看一下
environment.yml
文件的内容,看看这个项目需要用到什么conda环境
- 我在文件夹中启动一个 Powershell 会话,并使用
conda activate some_env_name
在 Powershell 中激活 conda 环境。
- 我开始其余的程序,例如
jupyter lab
或 spyder
.
我觉得第 2 步和第 3 步应该是自动的,但我该怎么做呢?
在尝试了各种方法后,我在我的 profile.ps1
文件中选择了一个函数,该函数在我每次启动新的 powershell 会话时都会被触发。
该函数从 environment.yml
文件中读取环境名称并尝试激活该环境:
function conda_here {
$first_line = Get-Content -Head 1 environment.yml # This returns "name: conda_env_name"
$env_name = $first_line.Split(": ")[-1] # This splits it into an array of [name, : , conda_env_name] and takes the last element
try {
conda activate $env_name
} catch {
Write-Host "Tried to activate environment $env_name, but failed." -ForeGroundColor Red
}
}
为了让该函数在每次 powershell 启动时触发,我在函数定义后添加了以下内容:
# Activate a conda environment when started in a dir with a .conda-env file
if ( Test-Path environment.yml ){
conda_here
}
现在,每当我在包含 environment.yml
文件的文件夹中启动 powershell 会话时,相应的 conda 环境就会自动激活。
我使用 Anaconda environments 来管理我的 Python 安装。
我将 Python 项目组织在文件夹中;每个文件夹都包含一个项目的代码和一个文件 environments.yml
,该文件指定 conda 环境应该 运行 特定 Python 项目的包。
我通常是这样开始一个项目的:
- 我导航到项目文件夹(在 Total Commander 中,但我认为这无关紧要)。
- 我看一下
environment.yml
文件的内容,看看这个项目需要用到什么conda环境 - 我在文件夹中启动一个 Powershell 会话,并使用
conda activate some_env_name
在 Powershell 中激活 conda 环境。 - 我开始其余的程序,例如
jupyter lab
或spyder
.
我觉得第 2 步和第 3 步应该是自动的,但我该怎么做呢?
在尝试了各种方法后,我在我的 profile.ps1
文件中选择了一个函数,该函数在我每次启动新的 powershell 会话时都会被触发。
该函数从 environment.yml
文件中读取环境名称并尝试激活该环境:
function conda_here {
$first_line = Get-Content -Head 1 environment.yml # This returns "name: conda_env_name"
$env_name = $first_line.Split(": ")[-1] # This splits it into an array of [name, : , conda_env_name] and takes the last element
try {
conda activate $env_name
} catch {
Write-Host "Tried to activate environment $env_name, but failed." -ForeGroundColor Red
}
}
为了让该函数在每次 powershell 启动时触发,我在函数定义后添加了以下内容:
# Activate a conda environment when started in a dir with a .conda-env file
if ( Test-Path environment.yml ){
conda_here
}
现在,每当我在包含 environment.yml
文件的文件夹中启动 powershell 会话时,相应的 conda 环境就会自动激活。