【发布时间】:2020-05-29 10:42:44
【问题描述】:
我在我的 Ubuntu 16.04 VPS 上使用 Linuxbrew (Homebrew 2.2.5) 安装了 pyenv-virtualenv。 pyenv 版本为:1.2.16。现在当我做这样的测试时:
pyenv install 3.8.1
pyenv virtualenv 3.8.1 test
cd /.pyenv/versions/3.8.1/envs/test
pyenv local 3.8.1
然后进入/离开/.pyenv/versions/3.8.1/envs/test 不会激活停用虚拟环境,我在我的shell 中看不到(test) username:~。我还在那里创建了一个/home/users/test 目录和.python-version,但仍然进入/离开目录什么都不做。
如果在你的 shell 中配置了 eval "$(pyenv virtualenv-init -)", pyenv-virtualenv 将自动激活/停用 virtualenvs 进入/离开包含 .python-version 文件的目录 包含有效虚拟环境的名称,如 pyenv virtualenvs 的输出(例如,venv34 或 3.4.3/envs/venv34 in 上面的例子)。 pyenv 使用 .python-version 文件来表示 本地 Python 版本,可以使用 pyenv 创建和删除 本地命令。
所以第一个问题是:为什么这不起作用?为什么虚拟环境在进入/离开包含.python-version文件的目录时没有自动激活/停用?
另外,当我手动激活 virtualenv pyenv activate test 然后检查 Python 版本时,它会打印系统 Python 版本,而不是来自环境的版本:Python 3.8.1:
python --version
Python 3.7.6
我只能通过像这样直接引用 virtualenv shims Python 来获得正确的 Python 版本:
which python
/home/andre/.pyenv/shims/python
/home/andre/.pyenv/shims/python --version
Python 3.8.1
无论 virtualenv“测试”是否被激活,行为都是相同的。
我希望在激活“测试”后,命令python --version 返回Python 3.8.1
那么第二个问题:为什么在激活/停用虚拟环境时pip和python没有切换?
这些是 pyenv 错误吗?还是我做错了什么?
【问题讨论】:
标签: python python-3.x pip virtualenv pyenv