Anaconda环境bash前缀太长

时间:2019-06-16 13:36:31

标签: bash anaconda python-venv ps1

我在项目文件夹中创建了anaconda环境,该文件夹使用-p选项指定了路径,即不在默认的anaconda3 / envs文件夹中:

conda create -p venv

问题是,当我激活该环境时,终端中的bash前缀太长,即它将环境的整个路径添加到提示中:

(/path/to/the/environment/venv) user@machine: ~/path/to/environment/$

有没有一种方法可以解决这个问题,这意味着将其缩短或从提示中删除前缀?

我的$ PS1:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

1 个答案:

答案 0 :(得分:4)

Conda提示自定义

Conda v4.6.0起,就有env_prompt配置选项可用于自定义PS1更改。这是说明:

$ conda config --describe env_prompt
# # env_prompt (str)
# #   Template for prompt modification based on the active environment.
# #   Currently supported template variables are '{prefix}', '{name}', and
# #   '{default_env}'. '{prefix}' is the absolute path to the active
# #   environment. '{name}' is the basename of the active environment
# #   prefix. '{default_env}' holds the value of '{name}' if the active
# #   environment is a conda named environment ('-n' flag), or otherwise
# #   holds the value of '{prefix}'. Templating uses python's str.format()
# #   method.
# # 
# env_prompt: '({default_env}) '

一个可以帮助您解决问题的方法是仅使用{name}变量

conda config --set env_prompt '({name}) '

,将仅显示环境的文件夹名称。例如,您的示例是

(venv) user@machine: ~/path/to/environment/$

请注意,这样做会使得当 base env处于活动状态时,提示将显示(anaconda3)而不是(base);否则,其他命名的envs应该照常出现。

如果您实在无法忍受,可以在未命名的env上运行basename {default_env}以得到与{name}相同的结果,并且仍然保留base。也就是说,

conda config --set env_prompt '(\$(basename {default_env})) '