将 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的主要内容,如果未能解决你的问题,请参考以下文章