Pyenv没有自动激活

use*_*401 3 python virtualenv boxen pyenv

我在我的环境中安装了pyenv,直到本周末(当我安装'Kivy'时)我的pyenv/local设置工作正常.但是现在当我进入各种python项目目录时,pyenv不会自动正确地激活正确的python版本.

例如

我使用像这样的pyenv创建一个环境,

pyenv virtualenv 3.3.2 work
Run Code Online (Sandbox Code Playgroud)

我让去到一个名为目录work,并有一个.python-version与文本文件work作为唯一的内容.

Pyenv检测到我的环境正在work使用这个文件但我的python版本不是python 3.3.2而是它2.7.9.

出于某种原因,发生了一些事情,我所有的pyenv虚拟环境都使用2.7.9了它们与创建它们的python版本相反.

当我跑,which python我得到,

/opt/boxen/homebrew/bin/python
Run Code Online (Sandbox Code Playgroud)

当我去pyenv版本目录并运行

$ cat pyvenv.cfg                                                                                                                                                                                           
home = /opt/boxen/pyenv/versions/3.3.2/bin
include-system-site-packages = false 
version = 3.3.2
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行pyenv activate我的python版本切换到python 3.3.2(或给定env的适当版本).

问题是,如何让pyenv像以前一样自动激活环境的python版本(在我做某事之前打破它).

Nic*_*k T 7

听起来,因为which python没有说它是垫片,你的envvar 首先没有bin/shims路径PATH.将这些行添加到shell启动脚本中,并确保它们在任何其他路径操作之后结束.

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
Run Code Online (Sandbox Code Playgroud)

eval行做了一些额外的shell monkeying我认为添加.pyenv/shims目录...检查一下echo $PATH也许.

  • 似乎我最初的猜测是正确的 `/opt/boxen/pyenv/‌ shims` 不是第一个(或者在其中包含 `python`、`pip` 等的地方中的第一个),因为它在 `/ opt/boxen/homebrew‌ /bin`,其中 `which python` 告诉您它正在使用。 (2认同)