将 virtualenv 从 3.5.3 降级到 2.7

Posted

技术标签:

【中文标题】将 virtualenv 从 3.5.3 降级到 2.7【英文标题】:Downgrade virtualenv to 2.7 from 3.5.3 【发布时间】:2017-07-02 11:00:47 【问题描述】:

我的 virtualenv 目前配置为 python 3.5.0,而我需要使用的包只支持 2.7。我需要一种在我的 virtualenv 中将我的 python 运行时降级到 2.7 的方法。

我确实有两个版本可供使用: 第一个在我的 virtualenv 中,第二个在计算机范围内。

(project) me-Air:element me$ python -V
Python 3.5.0

me-Air:element me$ python -V
Python 2.7.10

【问题讨论】:

删除 virtualenv 并再次创建它(这次是 2.7)? 是的,我会这样做:rmvirtualenv yourproject, mkvirtualenv -p /your/python27 yourproject-27 你不能降级一个virtualenv,你需要创建一个新的。如果您使用的是 Mac,请使用 brew 安装单独的 Python 2,然后使用您的独立 python 安装到 pip install virtualenv 与其降级整个环境(并削弱您未来的升级),您还可以使用不同的软件包吗? 【参考方案1】:

我发现的一个最好的工作是使用“pyenv” 通过使用 pyenv 将较低版本设置为您的全局版本 然后制作目录,进入里面,使用下面来制作一个virtualenv

你可以这样使用:

$ python3.7 -m venv env

之后激活环境:

$ source env/bin/activate

然后:

$ which python
您可以将 pyenv 设置为根级别,实际上如果您使用 brew 或其他方式搜索 install pyenv,您会发现

输出显示python代码的位置。

复制它们并将其粘贴到您在升级时遇到问题的最后一个目录。

我的问题: 我将我的 python 升级到最新(3.8.5),但不幸的是 jupyter-lab 和 pip 无法工作,所以 9 小时后我这样做了,它工作了,

我们得到的话题:

安装 pyenv:

$brew install pyenv

如下所示:

$ PATH=$(pyenv root)/shims:$PATH
$ echo 'PATH=$(pyenv root)/shims:$PATH' >> ~/.zshrc 

安装你的 python 版本:

$ pyenv install 3.7.0
$ pyenv install 3.8.5

将低级变为全局:

$ pyenv global 3.7.0

做virtualenv的事情,编码结束。获取文件 复制它,转到最后一个目录并粘贴并删除其中的原件。

【讨论】:

此链接将帮助您使用 pyenv:opensource.com/article/20/4/pyenv【参考方案2】:

另一种将 virtualenv 固定到特定 Python 版本的方法是通过 Python 可执行文件上的 -m 标志运行它。例如

python2 -m virtualenv ./venv

同样,如果你想要一个 Python 3 virtualenv,你可以运行这个:

python3 -m virtualenv ./venv

【讨论】:

不是virtualenv,而是venv(至少对于Python 3.7)。 @amedina 你说得很好!但正如您所指出的,仅当您使用 Python 3 中的内置 venv 支持(Python 2 中不存在该支持)时,这才是正确的。如果您使用的是我的回答假设的“virtualenv”包,那么您可以按照上述方式启动一个。【参考方案3】:

您不能“降级”virtualenv。

您必须创建一个新的,除非您希望 virtualenv 与当前的名称相同,否则您不一定需要删除当前的。

virtualenv -p /usr/bin/python2.7 <path/to/new/virtualenv/>

由于您的问题需要将它们集成,因此有很多方法可以做到这一点,请使用 subprocess 对 Python 2.7 代码执行任何您需要的操作,并将输出传输回您的 Python 3 代码。

您还可以使用Rabbit MQ Queues 在运行不同版本 Python 的程序之间传输数据。

【讨论】:

以上是关于将 virtualenv 从 3.5.3 降级到 2.7的主要内容,如果未能解决你的问题,请参考以下文章

我可以防止 pip 隐式降级软件包吗?

如何将模块从一个 virtualenv 复制到另一个

将 iOS 项目部署目标从 8 降级到 7

如何将 Xcode 从 7.0 版本降级到 6.4?

将 Android API 从 27 降级到 21 (KOTLIN) 后出错

将virtualenv从host1复制到host2,但是,host2上的virtualenv显示没有已安装的软件包