一起使用 virtualenvwrapper 和 pyenv

Using virtualenvwrapper and pyenv together

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

但是我们也有 virtualenvs 和用 mkproject mynewenv 创建的目录位于 ~/.ve~/workspace 之类的地方。工作区是我们放置笔记本、代码和脚本 .pynb.py.r 等的地方,相应的 virtualenv 使用全局 python 版本,该版本在执行 [=15] 时处于活动状态=].

这些使用 mkproject mynewenv 创建的 virtualenvs 与使用 pyenv virtualenv 创建的 virtualenvs 是分开的。

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

您应该安装 pyenv-virtualenvwrapper plugin 并进行设置。之后你可以设置 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 
  mkvirtualenv  ${@:3} 
}

请记住,使用 mkvirtualenv test-venv -p python<version> 不会选择由 pyenv 安装的 python 版本。

另一种方法: 如果您只想使用 mkvirtualenv 创建一个 venv,您可以使用 shell 函数来替换它的行为。

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

要创建 virtualenv,请使用 pyvenv <python-version> <venv-name>。您可以将所有 virtualenvwrapper 命令与新创建的 venv 一起使用。