如何清除conda环境变量?

She*_*ero 7 python anaconda conda

当我在 conda 基本环境上设置环境变量时,我在应该分配给该变量的路径中犯了一个错误。我试图$PYSPARK_PYTHON在 conda env 上设置 env 变量。conda env config vars set $PYSPARK_PYTHON=errorpath即使路径有错误,set 命令也成功执行,并要求我重新激活环境。而且我无法激活环境。

当我通过执行以下操作检查环境变量列表时: conda env config vars list -n base

它显示了我设置的不正确路径,但没有变量名称,如下所示: = C:\\ProgramData\\Anaconda3\\envs\\some-env\\python3.7

由于上述错误的环境变量,我无法激活基本环境。它给我一个错误,如下所示:

Invoke-Expression : At line:6 char:1
+ $Env: = "C:\\ProgramData\\Anaconda3\\envs\\some-env\\python3.7"
+ ~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to
delimit the name.
At C:\ProgramData\Anaconda3\shell\condabin\Conda.psm1:101 char:9
+         Invoke-Expression -Command $activateCommand;
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
    + FullyQualifiedErrorId : InvalidVariableReferenceWithDrive,Microsoft.PowerShell.Commands.InvokeExpressionCommand
Run Code Online (Sandbox Code Playgroud)

我不确定如何修复此错误,但我想从基本环境中删除环境变量。

我尝试使用命令取消它conda env config vars unset $PYSPARK_PYTHON -n base。但这不起作用。我认为由于列表中缺少变量声明,我无法访问该变量。我确实尝试过,但并不希望$PYSPARK_PYTHON它能删除所有孤立的环境变量,但事实并非如此。

有人能帮我解决这个问题吗?有什么方法可以重置基本环境而不影响其他环境,或者重置给定环境上的环境变量列表?

谢谢

Jos*_*bal 10

state尝试在conda-meta您的环境目录中查找名为 的 JSON 文件。根据您的操作系统和安装目录,它们conda-meta将安装在不同的位置。每个操作系统的默认安装路径是

  • 视窗:C:\Users\<your-username>\Anaconda3\conda-meta\state
  • Mac:/Users/<your-username>/anaconda3/conda-meta/state~/opt//anaconda3/conda-meta/state用于 GUI 安装
  • Linux:/home/<your-username>/anaconda3/conda-meta/state

通过编辑该文件,您可以手动更改环境变量。

进一步说明

我最近也弄乱了 conda 环境,只是通过检查 conda 代码才找到了这个答案。

在代码中可以看到环境变量是从文件中保存和加载的

    def _get_environment_state_file(self):
        env_vars_file = join(self.prefix_path, PREFIX_STATE_FILE)
        if lexists(env_vars_file):
            with open(env_vars_file, 'r') as f:
                prefix_state = json.loads(f.read(), object_pairs_hook=OrderedDict)
        else:
            prefix_state = {}
        return prefix_state

    def get_environment_env_vars(self):
        prefix_state = self._get_environment_state_file()
        env_vars_all = OrderedDict(prefix_state.get('env_vars', {}))
        env_vars = {
            k: v for k, v in env_vars_all.items()
            if v != CONDA_ENV_VARS_UNSET_VAR
        }
        return env_vars
Run Code Online (Sandbox Code Playgroud)

如果打印env_vars_file或查看PREFIX_STATE_FILE 的定义位置,您将找到存储环境变量的文件。


Smi*_*tty 7

对于发现自己在这里的 MacOS 用户,环境变量存储在名为statelocated at的 JSON 文件中/Users/<you>/opt/anaconda3/envs/<env>/conda-meta。看来您可以清空这些值,留下:

{"env_vars": {}}
Run Code Online (Sandbox Code Playgroud)

那里可能还有其他状态键/值对,因此请小心不要删除它们。