问题描述
我遇到的问题是:
1.在终端执行 conda create -n generate_data python==3.8.10 这条命令后,安装阿里云百炼平台的dashscope库时发生错误,dashscope库要求python>=3.8.0,但我创建generate_data这个环境时,已经满足了该条件,接着破案
2.接着在终端输入python --version 这条命令查看python版本,结果返回的是3.6的版本,然后输入which python 这条命令查看python路径,返回的是全局的python路径,不是该anaconda中generate_data这个环境的路径,
3.解密:是因为我安装了3.6版本的python,且在.bash_profile
中添加了对 python
和 pip
的别名配置,它会覆盖 conda
环境的 python
和 pip
路径,使我始终使用全局的 Python 3.6。
问题解释
当你激活 conda
虚拟环境时,应该使用该环境中的 Python
版本。然而,由于你在 .bash_profile
中添加了对 python
和 pip
的别名配置,它会覆盖 conda
环境的 python
和 pip
路径,使你始终使用全局的 Python 3.6。
解决问题
1. 修改 .bash_profile
文件
你可以修改 .bash_profile
中的别名部分,确保在 conda
环境激活后,使用 conda
环境中的 python
和 pip
。一种解决方案是只在未激活 conda
环境的情况下设置这些别名。
可以使用 if
条件来检测 conda
是否已经激活,并根据情况选择是否设置别名。
- 使用文本编辑器(如
vim
、nano
)编辑.bash_profile
文件: - 使用vim:
vim ~/.bash_profile
-
使用nano:
nano ~/.bash_profile
-
编辑
.bash_profile
-
在
vim
或vi
中:按i
进入插入模式,进行编辑。 - 在
nano
中:直接编辑即可。 -
将你想要的内容粘贴到文件中。你可以将以下内容添加到
.bash_profile
文件中:
>>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/xxx/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/xxx/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/Users/xxx/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/Users/xxx/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
# 仅当未激活conda环境时使用系统Python 3.6
if [ -z "$CONDA_DEFAULT_ENV" ]; then
export PATH=${PATH}:/Library/Frameworks/Python.framework/Versions/3.6/bin
alias python="/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6"
alias pip="/Library/Frameworks/Python.framework/Versions/3.6/bin/pip3"
fi
-
保存并退出
- 如果你使用
vim
,先按Esc
,退出编辑模式,然后输入:wq
保存并退出。 - 如果你使用
nano
,按Ctrl + O
保存,按回车
确认,然后按Ctrl + X
退出。
*移除可能存在的多余别名:
另外,确保没有在其他地方定义类似的别名。你可以运行以下命令检查当前是否有别名:
unalias python
*或者直接查看所有别名:
alias
如果发现了多余的 python
和 pip 别名,可以通过 unalias python 和
unalias pip
移除。
2. 刷新 .bash_profile
在修改 .bash_profile
后,运行以下命令以应用更改:
source ~/.bash_profile
3. 激活 Conda 环境后再次检查:
激活你的 Conda 环境:
conda activate generate_data
然后查看 python的路径和版本:
which python
python --version
如果设置正确,which python
应该会指向 Conda 环境中的 Python 解释器,而不是系统的 Python 3.6。例如,它可能会输出类似:
/Users/xxx/opt/anaconda3/envs/generate_data/bin/python
这会确保当你激活 Conda 虚拟环境时,它会优先使用 Conda 环境的 Python
解释器,而不是系统的 Python 3.6。