Python3 仅在我转到 bash 然后 tcsh (anaconda) 时才在 tcsh 中打开

Python3 only opens in tcsh if I go to bash and then tcsh (anaconda)

我使用标准设置安装了anaconda3,主要使用tcsh。 如果终端在 tcsh 中打开,然后我输入 "conda" 它就可以了。 如果我输入 "python" 它会显示

Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

但是,如果我输入 "bash",然后输入 "tcsh",然后输入 "python",它会显示:

Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

作为参考,我的 .tcshrc 文件包含以下内容:

set path  = ( $path anaconda3/bin . /opt/local/bin /opt/local/ncbi/blast )

alias python2 '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7'

alias python3 '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5'

.bashrc 包含:

export PATH=~/anaconda3/bin:$PATH

.bash_profile 包含:

source ~/.bashrc
PATH=$PATH:$HOME/anaconda3/bin
export PATH="/anaconda3/bin:$PATH"

我是 Unix 和 Python 的新手,但需要在 bash 和 tcsh 中为 class 设置 anaconda。有什么想法吗?

更新:

当我在 tcsh

中启动终端时,

"which python" 产生“/usr/bin/python”

如果我切换到 bash,"which python" 会产生“/anaconda3/bin/python”

"echo $PATH" 在 tcsh 中产生 "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:anaconda3/bin:.:/opt/local/bin:/opt/local/ncbi/blast"

"echo $PATH" 在 bash 产量 "/anaconda/bin:/anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:anaconda3/bin:.:/opt/local/bin:/opt/local/ncbi/blast"

首先,请看一下这个问题及其答案,以了解 PATH 环境变量的工作原理:https://unix.stackexchange.com/questions/77898/how-does-the-path-enviroment-variable-work-in-linux.

您的问题是在您的 ~/.tcshrc 中您没有将 Anaconda 目录添加到您的 PATH 前面,因此 tcsh 首先找到系统安装并使用它。要解决此问题,您可以将该文件的第一行修改为:

setenv PATH ~/anaconda3/bin:$PATH:.:/opt/local/bin:/opt/local/ncbi/blast

tcsh 中,setenv 的作用与 bash 中的 export 相似,因此仅使用 set 不会可靠地改变您的 PATH.

附带说明一下,您似乎一遍又一遍地对 bash PATH 进行相同的修改...您可以稍微清理一下。