gpt4 book ai didi

python - pyenv-virtualenv : Python and PIP not changed when activating/deactivating virtual environment 的问题

转载 作者:行者123 更新时间:2023-12-04 12:37:09 25 4
gpt4 key购买 nike

我安装了 pyenv-virtualenv在我的 Ubuntu 16.04 VPS 上使用 Linuxbrew (Homebrew 2.2.5)。 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不激活停用虚拟环境,我看不到 (test) username:~在我的 shell 里。我还创建了一个 /home/users/test目录和 .python-version在那里但仍然进入/离开目录什么也不做。

documentation :

If eval "$(pyenv virtualenv-init -)" is configured in your shell, pyenv-virtualenv will automatically activate/deactivate virtualenvs on entering/leaving directories which contain a .python-version file that contains the name of a valid virtual environment as shown in the output of pyenv virtualenvs (e.g., venv34 or 3.4.3/envs/venv34 in example above) . .python-version files are used by pyenv to denote local Python versions and can be created and deleted with the pyenv local command.



所以第一个问题是:为什么这不起作用?为什么虚拟环境在进入/离开包含 .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“test”,行为都是相同的。
我希望在激活“测试”命令后 python --version返回 Python 3.8.1
那么第二个问题:为什么pippython激活/停用虚拟环境时没有切换?

这些是pyenv错误吗?还是我做错了什么?

最佳答案

原来,为了自动激活/停用venv当进入/离开目录时 .python-version那里的文件必须包含 venv name而不是 Python version与此相关 venv
所以执行:pyenv local 3.8.1创建一个 .python-version仅包含 Python 版本的文件 3.8.1 .
然后进入/离开一个包含 .python-version 的目录file 将设置/取消设置该文件中指定的 Python 版本,但不会激活/停用任何 venv .

创建一个 .python-version文件将同时执行:激活虚拟环境并设置 Python 版本命令应如下所示:pyenv local test哪里test是用以下方式创建的 venv:pyenv virtualenv 3.8.1 test .

如此变化3.8.1test.python-version解决了这个问题。
完成此操作后 venv进入/离开包含 .python-version 的目录时被激活/停用.

但是 Python 版本仍然没有更改为与 venv 相关的版本。 (在这种情况下 3.8.1 )

然后我发现我的 .profile 中有两行这导致了这个问题:

alias python=/home/linuxbrew/.linuxbrew/bin/python3
alias pip=/home/linuxbrew/.linuxbrew/bin/pip3

删除这些行后,一切都按预期工作。

关于python - pyenv-virtualenv : Python and PIP not changed when activating/deactivating virtual environment 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com