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

10

我正在尝试使用需要 Python 3.6.x 的 QGIS。

我在 Mac 上,系统中已经安装了 Python 2.7 和 3.7。

我尝试过:

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

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

pyenv activate my-virtualenv

我收到了这个错误:

无法激活虚拟环境。

可能是因为pyenv-virtualenv没有正确加载到您的Shell中。 请重新启动当前Shell并重试。

我尝试了一遍:

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 virtualenvs 命令时,会看到什么? - Chris Larson
3个回答

14

初始化 pyenv

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

为了节省打字时间,将以下内容添加到你的.bashrc文件中:

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

如何将某些内容添加到.bashrc中?Mac上的shell是什么? - Snhorq
QGIS软件以.pkg格式提供。现在我已经进入了虚拟环境,(my-virtualenv) bash-3.2$,我该如何在环境中打开这个包? - Snhorq
如何将内容添加到.bashrc文件中?使用命令vim ~/.bashrc或者echo 'eval "$(pyenv init -)"' > ~/.bashrc。在Mac上,shell是什么?根据你的问题中显示的bash-3.2,我确定shell是bash。QGIS软件以.pkg格式提供。如何在环境中打开这个包?不清楚这个pkg是什么,但肯定不是Python相关的东西。 - phd
这个软件包是一个名为QGIS的软件。我能否只将软件安装到虚拟环境中?我设置了这个环境,因为该软件需要Python 3.6。 - Snhorq
我还需要添加 eval "$(pyenv init --path)" 才能使其正常工作。所以需要在 .zshrc 文件中添加三个内容。 - potench
@potench https://dev59.com/m8Hqa4cB1Zd3GeqPxVW7#68278214 - phd

3

试试这个:

  1. 在终端中输入:nano ~/.bashrc

  2. 在最后添加:

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

就是这样,这对我起作用了。


1

在你激活虚拟环境之前,你需要使用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也可以),但是为了您未来的自己着想,给事物命名从来都不是坏主意,因为那个人不一定会记得它是用来做什么的。实际上,对于这个特定的应用程序,您可能会考虑使用`QGIS-virtualenv-3.6.5`。

pyenv virtualenv 3.6.5 QGIS-virtualenv-3.6.5

如果你已经有了一个虚拟环境,那么接着执行以下操作:

pyenv activate QGIS-virtualenv-3.6.5

(或者您可以选择任何虚拟环境名称。)


这让我满足了要求:setuptools在 /Users/user/.pyenv/versions/3.6.5/envs/QGIS-virtualenv-3.6.5/lib/python3.6/site-packages 中已经安装完成。 要求已经满足:pip 在 /Users/user/.pyenv/versions/3.6.5/envs/QGIS-virtualenv-3.6.5/lib/python3.6/site-packages 中已经安装完成。 - Snhorq
我认为在您的操作中可能存在一个遗漏步骤。您告诉我执行pyenv activate QGIS-virtualenv-3.6.5后立即出现Requirement already satisfied,而您在输入后没有进行其他操作?这是您想要表达的意思吗? - Chris Larson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接