Pyenv 选择 virtualenv 目录
Pyenv choose virtualenv directory
我刚开始使用 pyenv 来管理我的 python 版本,并开始使用 pyenv virtualenv 插件来管理我的 virtualenvs,到目前为止,我很喜欢它。然而,我想念的一件事是,使用 virtualenv,您实际上可以将虚拟环境放置在存储库目录中,以便您的存储库是一个完全可重现的环境。有谁知道在 pyenv 中选择 virtualenv 目录的方法吗?
简答:据我所知,你不能。
也不行吧?如果您使用 pyenv virtualenv
将 virtualenv 安装到存储库中,然后将该存储库克隆到另一台机器上……新机器上的 pyenv
如何知道控制存储库中的 virtualenv?
此外,“你可能不应该那样做”。 Virtualenvs 并没有 100% 与底层 Python 安装解耦,而且并不是真的那么便携。你真的想用一堆容易复制的垃圾来乱丢你的存储库吗?处理事情的“正确”方法可能是为 pip 维护一个 requirements.txt
——这样你就可以在任何克隆你的 repo 的地方轻松地重现你的开发环境。
综上所述,没有什么能阻止你使用普通的旧 virtualenv
在你喜欢的任何地方创建一个 virtualenv,即使你安装了 virtualenv
pyenv
控制下的 Python 口译员。该 virtualenv 本身当然 不会 由 pyenv
管理,但您仍然可以像往常一样使用它……
有一个解决方法
在您的项目目录中,创建一个 .python-version
文件。假设您已经使用 pyenv-virtualenv
安装了一些虚拟环境,然后将此行附加到它(您可能想要更改版本号):
3.7.1/envs/your-project-name@3.7.1
无论何时进入该目录,都会使用正确的 python 版本,而且运行良好。
项目跟踪器上有一个 GitHub 问题询问这个问题:https://github.com/pyenv/pyenv/issues/802
reply by a project collaborator was:
You can just create virtualenv in any location. To use it from pyenv, create symlink to the environment in ~/.pyenv/versions
尽管我必须说我是 not very satisfied with this solution。
怎么样:
pyenv install -s 3.8.3 # install preferred version if needed
PYENV_VERSION=3.8.3 python -m venv /tmp/your/prefered/dir ; source /tmp/your/prefered/dir/activate
注意这个方法使用的是venv,不是virtualenv,两者略有不同,是标准库的一部分。
我刚开始使用 pyenv 来管理我的 python 版本,并开始使用 pyenv virtualenv 插件来管理我的 virtualenvs,到目前为止,我很喜欢它。然而,我想念的一件事是,使用 virtualenv,您实际上可以将虚拟环境放置在存储库目录中,以便您的存储库是一个完全可重现的环境。有谁知道在 pyenv 中选择 virtualenv 目录的方法吗?
简答:据我所知,你不能。
也不行吧?如果您使用 pyenv virtualenv
将 virtualenv 安装到存储库中,然后将该存储库克隆到另一台机器上……新机器上的 pyenv
如何知道控制存储库中的 virtualenv?
此外,“你可能不应该那样做”。 Virtualenvs 并没有 100% 与底层 Python 安装解耦,而且并不是真的那么便携。你真的想用一堆容易复制的垃圾来乱丢你的存储库吗?处理事情的“正确”方法可能是为 pip 维护一个 requirements.txt
——这样你就可以在任何克隆你的 repo 的地方轻松地重现你的开发环境。
综上所述,没有什么能阻止你使用普通的旧 virtualenv
在你喜欢的任何地方创建一个 virtualenv,即使你安装了 virtualenv
pyenv
控制下的 Python 口译员。该 virtualenv 本身当然 不会 由 pyenv
管理,但您仍然可以像往常一样使用它……
有一个解决方法
在您的项目目录中,创建一个 .python-version
文件。假设您已经使用 pyenv-virtualenv
安装了一些虚拟环境,然后将此行附加到它(您可能想要更改版本号):
3.7.1/envs/your-project-name@3.7.1
无论何时进入该目录,都会使用正确的 python 版本,而且运行良好。
项目跟踪器上有一个 GitHub 问题询问这个问题:https://github.com/pyenv/pyenv/issues/802
reply by a project collaborator was:
You can just create virtualenv in any location. To use it from pyenv, create symlink to the environment in ~/.pyenv/versions
尽管我必须说我是 not very satisfied with this solution。
怎么样:
pyenv install -s 3.8.3 # install preferred version if needed
PYENV_VERSION=3.8.3 python -m venv /tmp/your/prefered/dir ; source /tmp/your/prefered/dir/activate
注意这个方法使用的是venv,不是virtualenv,两者略有不同,是标准库的一部分。