如何使虚拟环境与 pyenv 一起工作?

How can I make a virtual environment work with pyenv?

我正在尝试使用 QGIS,这需要 python 3.6.x.

我在 mac 的系统上已经有 python 2.7 和 3.7。

我试过了

brew update
brew install pyenv
brew install pyenv-virtualenv
pyenv install 3.6.5

它安装得很好。然后,当我尝试激活

pyenv activate my-virtualenv

我收到这个错误

Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly. Please restart current shell and try again.

我再次尝试

exec $SHELL
pyenv activate my-virtualenv

并收到同样的错误。

我在 bash-3.2$ 和常规终端

中执行了这个命令
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi

我仍然遇到同样的错误。如何获得使用 python 3.6 的环境 运行?

您需要使用 pyenv-virtualenv 或其他可用的虚拟环境工具之一实际创建 my-virtualenv,然后才能激活它。鉴于您在问题中引用了 pyenv-virtualenv,这里有一个示例:

pyenv virtualenv 3.6.5 my-virtualenv-3.6.5

这将创建一个名为 my-virtualenv-3.6.5 的虚拟环境,其中包含 Python 3.6.5.

当然,您可以随意命名您的环境(my-virtualenv 很好), but it's never a bad idea to name things for your future self, because that person won't necessarily remember what it was for. You might considerQGIS-virtualenv-3.6.5`,事实上,对于这个特定的应用程序。

pyenv virtualenv 3.6.5 QGIS-virtualenv-3.6.5

一旦你有一个虚拟环境,然后继续做:

pyenv activate QGIS-virtualenv-3.6.5

(或者任何你选择的 virtualenv 名称。

初始化pyenv:

exec $SHELL
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv activate my-virtualenv

为了节省您自己的输入时间,请将此添加到您的 .bashrc:

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

试试这个: 进入终端,

  1. 写入:nano ~/.bashrc

  2. 最后加上:

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
  1. 退出并保存
  2. 进入终端写入:source ~/.bashrc

仅此而已,这对我有用。