14

我刚开始使用 pyenv 来管理我的 python 版本,并开始使用 pyenv virtualenv 插件来管理我的 virtualenvs,到目前为止,我很喜欢它。然而,我想念的一件事是,使用 virtualenv,您实际上可以将虚拟环境放置在存储库目录中,以便您的存储库是一个完全可重现的环境。有谁知道在pyenv中选择你的virtualenv目录的方法?

4

4 回答 4

10

简短的回答:据我所知,你不能。

它也不会真的起作用,对吧?如果您使用pyenv virtualenv将 virtualenv 安装到 repo 中,然后将该 repo 克隆到另一台机器上……pyenv新机器上如何知道控制存储库中的 virtualenv?

此外,“你可能不应该那样做”。Virtualenvs 不是 100% 与底层的 Python 安装解耦,也不是那么便携。你真的想用一堆容易复制的垃圾乱扔你的存储库吗?处理事情的“正确”方法可能是维护一个requirements.txtfor pip——这样你就可以在任何克隆你的 repo 的地方轻松地重现你的开发环境。

综上所述,没有什么能阻止您使用普通的旧virtualenv版本在您喜欢的任何地方创建一个 virtualenv,即使您安装virtualenv到受pyenv控制的 Python 解释器中也是如此。该 virtualenv 本身当然不会由 管理pyenv,但您仍然可以像往常一样使用它……</p>

于 2016-04-11T13:56:19.460 回答
3

这是项目跟踪器上的一个 GitHub 问题,询问此问题:https ://github.com/pyenv/pyenv/issues/802

项目合作者的回复是

您可以在任何位置创建 virtualenv。要从 pyenv 使用它,请在 ~/.pyenv/versions 中创建指向环境的符号链接

虽然我必须说我对这个解决方案不是很满意

于 2019-12-10T13:08:54.470 回答
2

有一个解决方法

在您的项目目录中,创建一个.python-version文件。假设您已经使用 安装了一些虚拟环境pyenv-virtualenv,然后将此行附加到它(您可能想要更改版本号):

3.7.1/envs/your-project-name@3.7.1

每当您进入该目录时,都会使用正确的 python 版本,并且运行良好。

于 2018-10-27T18:11:51.257 回答
0

怎么样:

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,略有不同,是标准库的一部分。

于 2021-10-04T19:25:57.733 回答