我刚开始使用 pyenv 来管理我的 python 版本,并开始使用 pyenv virtualenv 插件来管理我的 virtualenvs,到目前为止,我很喜欢它。然而,我想念的一件事是,使用 virtualenv,您实际上可以将虚拟环境放置在存储库目录中,以便您的存储库是一个完全可重现的环境。有谁知道在pyenv中选择你的virtualenv目录的方法?
4 回答
简短的回答:据我所知,你不能。
它也不会真的起作用,对吧?如果您使用pyenv virtualenv
将 virtualenv 安装到 repo 中,然后将该 repo 克隆到另一台机器上……pyenv
新机器上如何知道控制存储库中的 virtualenv?
此外,“你可能不应该那样做”。Virtualenvs 不是 100% 与底层的 Python 安装解耦,也不是那么便携。你真的想用一堆容易复制的垃圾乱扔你的存储库吗?处理事情的“正确”方法可能是维护一个requirements.txt
for pip——这样你就可以在任何克隆你的 repo 的地方轻松地重现你的开发环境。
综上所述,没有什么能阻止您使用普通的旧virtualenv
版本在您喜欢的任何地方创建一个 virtualenv,即使您安装virtualenv
到受pyenv
控制的 Python 解释器中也是如此。该 virtualenv 本身当然不会由 管理pyenv
,但您仍然可以像往常一样使用它……</p>
这是项目跟踪器上的一个 GitHub 问题,询问此问题:https ://github.com/pyenv/pyenv/issues/802
项目合作者的回复是:
您可以在任何位置创建 virtualenv。要从 pyenv 使用它,请在 ~/.pyenv/versions 中创建指向环境的符号链接
虽然我必须说我对这个解决方案不是很满意。
有一个解决方法
在您的项目目录中,创建一个.python-version
文件。假设您已经使用 安装了一些虚拟环境pyenv-virtualenv
,然后将此行附加到它(您可能想要更改版本号):
3.7.1/envs/your-project-name@3.7.1
每当您进入该目录时,都会使用正确的 python 版本,并且运行良好。
怎么样:
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,略有不同,是标准库的一部分。