如何使用 python 默认解释器而不是 miniconda 的基本 python 解释器

How to use the python default interpreter instead of miniconda's base python interpreter

提问人:Chirag Mehta 提问时间:10/18/2023 更新时间:10/19/2023 访问量:98

问:

我的默认 python 解释器已设置为 conda 的基本环境 python 解释器。我希望我的默认值是默认值。/usr/bin/python3

我看过这个问题,它表明更改 PATH 中的顺序会起作用。但是我是鱼用户,所以任务变得更加乏味。

仅仅使用 更改 PATH 环境变量不起作用,可能是因为我的以下部分set -U PATH <my path>config.fish

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
if test -f /home/cmaspi/miniconda3/bin/conda
    eval /home/cmaspi/miniconda3/bin/conda "shell.fish" "hook" $argv | source
end
# <<< conda initialize <<<

这可能是改变 PATH 的罪魁祸首,但我不确定。如何更改路径,使我的旧路径成为默认路径?conda "shell.fish" "hook"/usr/bin/python3

蟒蛇 conda miniconda

评论

0赞 faho 10/18/2023
事实上,你可以弄清楚它做了什么 - 只要在没有它的情况下运行,它就会打印它会做什么。/home/cmaspi/miniconda3/bin/conda shell.fish hooksourceeval
0赞 merv 10/19/2023
为什么不将 Conda 配置为不自动激活 base,即 ?(在 shell 中运行一次,而不是在脚本中运行)conda config --set auto_activate_base false
0赞 Chirag Mehta 10/19/2023
@merv问题出在路径上。我已经停用了基本环境,但这不会改变路径。
0赞 merv 10/19/2023
是的,它绝对会改变 PATH - “激活”和“停用”环境的行为从根本上说是操纵 PATH 的行为之一。如果设置了,则 Conda 激活码仅添加到 PATH,其中不包括(只有数)。关于如何正确配置它可能存在一些困惑,公认的答案是一个非常迂回的解决方法。auto_activate_base: falsecondabin/pythonbin/

答:

0赞 Guapi-zh 10/18/2023 #1

您可以添加 PATH 变量以将 “/usr/bin” 作为第一个目录。您可以使用该命令并将此命令放在 Conda 初始化块之前:set

# Set the default Python interpreter
set -x PATH /usr/bin $PATH

# >>> conda initialize >>>
if test -f /home/cmaspi/miniconda3/bin/conda
    eval /home/cmaspi/miniconda3/bin/conda "shell.fish" "hook" $argv | source
end
# <<< conda initialize <<<

# Other Fish shell configurations
# ...

# Alias to use 'python' to run Python 3
alias python /usr/bin/python3

请记住,要应用这些更改。source

评论

0赞 faho 10/19/2023
这有两个问题:1.它在 miniconda 前面添加其路径之前添加 /usr/bin,因此它无效,2.它每次都会添加 /usr/bin,复制它。
0赞 faho 10/19/2023
一个简单的创可贴是在运行 conda 添加 /usr/bin。
2赞 faho 10/19/2023 #2

简而言之:可以告诉将路径移动到$PATH前面:fish_add_path

fish_add_path --path --move /usr/bin

(“--move”告诉它移动已经包含的路径,“--path”告诉它直接对$PATH操作)

这将注意只在$PATH中留下一个 /usr/bin,如果它已经在前面,它不会做任何事情。

如果您有 $PATH

/usr/bin /usr/local/bin

Conda 将其设置为

/path/to/conda/bin /usr/bin /usr/local/bin

这将把它变成

/usr/bin /path/to/conda/bin /usr/local/bin

您还可以存放旧$PATH并将所有这些部件移到前面:

set -l oldpath $PATH
/home/cmaspi/miniconda3/bin/conda shell.fish hook | source
fish_add_path --move --path $oldpath

或者,您可以使用以下命令将 conda 组件移动到$PATH的后面(使用我的安装使用的实际路径):--append

/home/cmaspi/miniconda3/bin/conda shell.fish hook | source
fish_add_path --move --path --append /opt/miniconda3/bin /opt/miniconda3/condabin

这里的调用并没有做任何神奇的事情。conda

它打印代码,然后读取该代码。你可以通过运行来检查它,看看它打印了什么。source/path/to/conda shell.fish hook

这里重要的一点就在最后。 是钩子定义的函数,如果你遵循它,你会看到它最终会运行conda activate basecondaconda activate base

eval ($CONDA_EXE shell.fish activate base)

(其中 $CONDA_EXE 是 conda 的路径)

这是另一个最终打印鱼代码的命令,您可以运行它并查看打印的内容,其中包括:conda shell.fish activate base

set -gx PATH "/opt/miniconda3/bin" "/opt/miniconda3/condabin" "/usr/local/sbin" "/usr/local/bin" "/usr/bin" "/usr/bin/site_perl" "/usr/bin/vendor_perl" "/usr/bin/core_perl";

其中“/opt/miniconda3/bin”和“/opt/miniconda3/condabin”是新的,其余的是我的旧$PATH。所以它实际上只是在前面添加这些组件。

评论

0赞 merv 10/19/2023
仅供参考,只是要公开的界面 - 它永远不会安装在那里,也不需要移动。否则,我犹豫是否认可这一点,因为 1) Conda 已经提供了一种在不屏蔽系统软件(设置)的情况下启用的机制;2)目前尚不清楚PATH的重写是否会干扰Conda在以后的激活中对PATH的管理。在一些基本测试中,它随后总是将环境注入到附加位置,这将导致系统始终占主导地位。condabin/condapythoncondaauto_activate_base: falsebin/