为什么我的Anaconda提示符修改器显示完整的环境路径?

3
我修改了Anaconda环境目录。在备用目录中安装的任何环境都会在提示符修改器中显示其完整路径。我只希望看到环境名称,为什么会显示完整路径?这只是美观上的问题还是其他方面也会受到影响?
通常,在使用Anaconda提示符和命令创建环境时: > conda create -n my_env
我使用以下命令激活环境:
conda activate my_env
然后提示符从(base)更改为:
(my_env)> 我希望在同一台机器上的不同用户之间共享环境。根据https://conda.io/projects/conda/en/latest/user-guide/configuration/use-condarc.html#specify-env-directories,我在基本conda安装路径下添加了一个文件.condarc,其中包含:
# envs_dirs: - C:\Users\Public\CondaEnvs
以相同方式创建新环境时,当我激活此环境时,现在会看到:
(C:\Users\Public\CondaEnvs\my_shared_env)

当环境处于活动状态时,环境变量CONDA_PROMPT_MODIFIER也已设置为(C:\Users\Public\CondaEnvs\my_shared_env)。

conda config --show的当前输出为:

add_anaconda_token: True
add_pip_as_python_dependency: True
aggressive_update_packages:
  - ca-certificates
  - certifi
  - openssl
allow_conda_downgrades: False
allow_cycles: True
allow_non_channel_urls: False
allow_softlinks: False
always_copy: False
always_softlink: False
always_yes: None
anaconda_upload: None
auto_activate_base: True
auto_update_conda: True
bld_path: 
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: flexible
channels:
  - defaults
client_ssl_cert: None
client_ssl_cert_key: None
clobber: False
conda_build: {}
create_default_packages: []
croot: C:\Users\ClibbonA\conda-bld
custom_channels:
  pkgs/main: https://repo.anaconda.com
  pkgs/free: https://repo.anaconda.com
  pkgs/r: https://repo.anaconda.com
  pkgs/msys2: https://repo.anaconda.com
  pkgs/pro: https://repo.anaconda.com
custom_multichannels:
  defaults: 
    - https://repo.anaconda.com/pkgs/main
    - https://repo.anaconda.com/pkgs/free
    - https://repo.anaconda.com/pkgs/r
    - https://repo.anaconda.com/pkgs/msys2
  local: 
debug: False
default_channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/free
  - https://repo.anaconda.com/pkgs/r
  - https://repo.anaconda.com/pkgs/msys2
default_python: 3.7
deps_modifier: not_set
dev: False
disallowed_packages: []
download_only: False
dry_run: False
enable_private_envs: False
env_prompt: ({default_env}) 
envs_dirs:
  - C:\Users\Public\CondaEnvs
  - C:\Users\ClibbonA\.conda\envs
  - C:\ProgramData\Anaconda3\envs
  - C:\Users\ClibbonA\AppData\Local\conda\conda\envs
error_upload_url: https://conda.io/conda-post/unexpected-error
extra_safety_checks: False
force: False
force_32bit: False
force_reinstall: False
force_remove: False
ignore_pinned: False
json: False
local_repodata_ttl: 1
migrated_channel_aliases: []
migrated_custom_channels: {}
non_admin_enabled: True
notify_outdated_conda: True
offline: False
override_channels_enabled: True
path_conflict: clobber
pinned_packages: []
pip_interop_enabled: False
pkgs_dirs:
  - C:\ProgramData\Anaconda3\pkgs
  - C:\Users\ClibbonA\.conda\pkgs
  - C:\Users\ClibbonA\AppData\Local\conda\conda\pkgs
proxy_servers: {}
prune: False
quiet: False
remote_connect_timeout_secs: 9.15
remote_max_retries: 3
remote_read_timeout_secs: 60.0
report_errors: None
rollback_enabled: True
root_prefix: C:\ProgramData\Anaconda3
safety_checks: warn
sat_solver: pycosat
shortcuts: True
show_channel_urls: None
solver_ignore_timestamps: False
ssl_verify: True
subdir: win-64
subdirs:
  - win-64
  - noarch
target_prefix_override: 
track_features: []
update_modifier: update_specs
use_index_cache: False
use_local: False
verbosity: 0
whitelist_channels: []


我认为无法绕过这个问题,因为你添加的目录不是默认目录,因此Conda想要更明确。如果您使用 --prefix 选项指定环境文件夹来创建环境,则会看到相同的行为。但我只是评论,因为我不确定。 - darthbith
2个回答

4
根据conda文档,你需要使用命令conda config --set env_prompt "({name}) "(在Windows上使用双引号)。按照这些说明,我发现当我取消激活环境时,前置字符串不是(base) 而是(Anaconda3) 。这与人们报告的有点不一致,但可能是Windows的问题。就像双引号一样 :p
Stackoverflow的其他地方,有人对整个问题进行了研究,并显示了一些命令,可以解决这个问题,尽管每次输入这些命令并不是非常方便。根据该主题中的答案,我整合出了以下解决方案,它对我起到了作用:
  • 假设您创建了一个名为myenv的虚拟环境。将一个.condarc文件放在其目录下(即<current directory>\myenv\.condarc)。文件的内容应该是env_prompt: "({default_env}) "(加上其他与您的项目相关的条目)。
  • 如果您还没有一般的.condarc文件,请使用命令conda config --set env_prompt "({name}) "创建一个,如果需要,在关闭括号后加上一个空格。如果这样的文件已经存在,则应包含以下行:env_prompt: "({name}) "
现在开始你的conda控制台。环境提示最初显示为(Anaconda3) ,但只要你激活和取消激活你的虚拟环境,一切都会显示正常。当激活myenv时,命令conda env list始终在正确的环境旁边显示星号。

1
感谢@interlinguex,.condarc中的env_prompt: "({name}) "就可以解决问题了。 - Daugmented

0

你尝试过了吗:

conda activate env_name

或者

source activate env_name

这个命令应该激活你的环境,你的运行程序中不应该有整个URL路径。

env_name 

这是您的环境名称。

您也可以尝试使用以下内容:

conda config --set changeps1 False

在此之后,您必须重新启动命令提示符,即在另一个窗口中运行程序。


是的,我目前是使用conda activate env_name来激活环境。将changeps1设置为False会删除提示符修改器 - 我希望用户仍然能够知道他们所在的环境,而不需要完整路径占用大量空间。 - Clibbon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接