一起使用 virtualenvwrapper 和 pyenv

tym*_*mac 7 python virtualenv virtualenvwrapper

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

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

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

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

Sil*_*Guy 3

您应该安装pyenv-virtualenvwrapper 插件并进行设置。之后你可以设置python版本,然后创建一个虚拟环境。

pyenv local 3.8.0
mkvirtualenv test-venv
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以创建一个 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} 
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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