同时使用virtualenvwrapper和pyenv

5

$ pyenv virtualenv 3.8.0 tf12创建了一个虚拟环境,位于~/.pyenv/versions/3.8.0/envs/tf12,其中包含我们使用pip install安装的软件包。如果我们像这样创建一个新的项目目录:mkdir myfolder && cd myfolder && pyenv local tf12,那么该项目目录将使用与tf12环境相同的内核和软件包,因为我们使用了pyenv local命令。

但我们还可以使用mkproject mynewenv创建虚拟环境和目录,它们位于某个地方,例如~/.ve~/workspace。工作区是我们放置笔记本、代码和脚本.pynb.py.r等的地方,对应的虚拟环境使用执行mkproject mynewenv时活跃的全局python版本。

使用mkproject mynewenv创建的这些虚拟环境与使用pyenv virtualenv创建的虚拟环境是独立的。

我得出这样的结论:我们不能将它们一起使用以获得更多可能性。它们各自独立使用,如果我错了,请纠正我。


1
我一直在阅读关于如何设置两者的教程,但从来没有人真正说过你能否这样做,总是暗示着应该是可能的。我和你的想法一样,感觉它们非常不同。即使尝试使用pyenv-virtualenvwrapper也似乎不像我想象中的那样工作。 - Marcel Wilson
1个回答

3

您需要安装 pyenv-virtualenvwrapper插件并设置它。之后,您可以设置Python版本,然后创建虚拟环境。

pyenv local 3.8.0
mkvirtualenv test-venv

如果您愿意,可以创建一个shell函数将这两行代码缩减为一行。

如果您不希望使用pyenv local命令来避免创建.python-version文件,则可以使用pyenv shell <python-version>命令代替。

# .bash_profile or .zshrc after pyenv and virtualenvwrapper init.
mkvenv()
{
  pyenv shell $1
  mkvirtualenv $2 ${@:3} 
}

请记住,使用mkvirtualenv test-venv -p python<version>不会检测通过pyenv安装的python版本。

另一种方法: 如果你只想使用mkvirtualenv创建虚拟环境,你可以使用shell函数来替换它的行为。

# .bash_profile or .zshrc after virtualenvwrapper init.
pyvenv()
{
  python$1 -m venv $WORKON_HOME/$2
  workon $2
}

要创建虚拟环境,请使用pyvenv <python版本> <虚拟环境名称>。您可以在新创建的虚拟环境中使用所有virtualenvwrapper命令。

1
抱歉,一直没有看到你的回复哈哈。可能是因为我解决了问题,所以有一段时间没有去查看 SO 了。最终我还是使用了 pyenv local。最近开始用 miniforge 了。 - Edison

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