我已经安装了pyenv,但是它没有执行其最基本的功能,即切换Python版本。以下终端命令对此进行了说明。
the file `main.py` is equivalent to:
import sys
print (sys.version)
Admins-MacBook-Pro-4:kylefoley kylefoley$ pyenv versions
system
* 2.7.14 (set by PYENV_VERSION environment variable)
3.5.3
3.6.1
3.7.3
pypy3.6-7.1.1
Admins-MacBook-Pro-4:kylefoley kylefoley$ pyenv global 3.5.3
Admins-MacBook-Pro-4:kylefoley kylefoley$ pyenv exec python main.py
2.7.14 (default, Oct 17 2019, 00:01:43)
您可以看到我运行main.py
时的版本是2.7。很多人都有这个问题。一种常见的解决方案是投放
eval "$(pyenv init -)"
在我完成的bash_profile上,这没有帮助。在这里 Cannot switch Python with pyenv 建议:
将PATH和shell环境变量放入.bash_profile(或发行版使用的任何文件)中。
但是他在说什么路径和什么shell环境变量?
我的.bashrc
文件看起来也像这样:
export PATH="/Users/kylefoley/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
任何帮助将不胜感激。另一件事,当我运行以下命令时,得到以下输出:
Admins-MacBook-Pro-4:kylefoley kylefoley$ python
Python 3.6.1rc1 (default, Mar 4 2017, 22:58:58)
答案 0 :(得分:1)
问题是.bashrc
不在{strong>非登录模式下source
。
Bash的初始化文件:
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(仅存在的第一个)/etc/bash.bashrc
(某些Linux;不适用于Mac OS X)~/.bashrc
$BASH_ENV
中的源文件在macOS上,由终端应用程序打开的默认Bash外壳是交互式登录外壳,但是在Linux上,由终端应用程序打开的默认Bash外壳是交互式非登录外壳。
在其他情况下,奇怪的交互式非登录加载要求也会使人们感到困惑。 最佳解决方案是将~/.bashrc
的加载要求更改为仅限交互式,这正是大多数Linux发行版正在做的事情。
# write content below into ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
这应该是您想要的解决方案。并且我建议每个Bash用户在配置文件中对此进行设置。
答案 1 :(得分:0)
一切都正确地完成了,只是我以为终端命令. ~/.bash_profile
更新了bash配置文件,而不必关闭终端或打开新终端来使更改生效。事实证明,. ~/.bash_profile
仅更新了一些bash_profile。重新启动终端后,一切都按计划进行。
答案 2 :(得分:0)
1.) 配置:
pyenv global [python version]
2.)重启终端(关闭所有终端窗口)