【问题标题】:How to change the python version of already existing virtualenv? [duplicate]如何更改现有 virtualenv 的 python 版本? [复制]
【发布时间】:2019-01-25 16:22:56
【问题描述】:

我已经使用 python 3.6 创建了一个虚拟环境,然后我进行了系统升级,并且在系统范围内安装了 python 3.7。现在我无法在那个虚拟环境中执行 python 文件,因为它正在搜索 python 3.6。

如何升级 virtualenv python 版本以匹配系统范围的版本或如何降级特定虚拟环境的 python 版本?

我正在使用 manjaro。

【问题讨论】:

    标签: virtualenv python-3.6 python-3.7 manjaro


    【解决方案1】:

    编辑 1

    做了一些测试,发现了另一种更“优雅”的方式来(至少)更新可执行文件。让我们假设虚拟环境最初是这样创建的 virtualenv -p /path/to/my/python2.7 .venv。可执行文件可以更新为特定的 python 版本,如下所示:virtualenv --clear -p /path/to/my/python3.6 .venv。请验证.venv/bin/python 中的python 符号链接是使用ls -la .venv/bin/python 更新的。旧的可执行文件仍将位于./venv/bin/

    注意:你需要安装特定的目标版本的python。


    请参阅this link,它解释得很好。

    Virtualenvwrapper 带有一些方便的命令来管理你的 virtualenvs。

    要更改您的 Python 版本:

    1. 停用您当前的环境会话。

    2. 如果您安装了许多软件包或库,那将是一个不错的选择 制作 requirements.txt 文件的想法。请记住将版本编辑为 必要的。

    3. 使用 wrapper 命令移除 virtualenv:rmvirtualenv

      • 这将删除 virtualenv,但保留您的项目文件。
    4. 用你想要的 Python 版本创建一个新的 virtualenv。

      • 示例:mkvirtualenv -p python3 env-name

      • 您可以使用 -p 标志和版本指定 Python 版本。如果 你有一个 requirements.txt 文件,你可以用 -r 指定 requirements.txt

    5. 现在将新的 virtualenv 绑定到项目目录。你可以 指定完整路径,但拥有新的 virtualenv 更容易 激活并在您的项目目录中。然后,运行命令:

    示例:setvirtualenvproject

    如果此答案对您有帮助,请告诉我/我们!

    【讨论】:

    • 感谢您的快速回答。由于某些原因,我不能使用 virtualenv 包装器,但我所做的是手动删除 virtualenv 的 bin/include/ 和 lib/ 文件夹,然后运行 ​​virtualenv -p python3 env
    • @dAn 很高兴听到你成功了!
    • 听起来比删除和重新创建一个新的 virtualenv 更让人头疼。
    • 这不是一个很好的答案,AFAICT,因为(1)当 python 升级时,您将失去创建新 requirements.txt 文件的能力(如果不是这样,请解释如何执行此操作) ; (2) 这似乎是“粉碎旧的虚拟环境并重建它”,这是一个非常不令人满意的答案。
    • @RobertP.Goldman 恕我直言 (1) 无效。只需手动更新依赖项手动以保证与新的python可执行文件的兼容性。没有其他方法可以做到这一点 AFAIK。对于(2),它大多是这样的......甚至是“优雅”的方式(见我的编辑1)。
    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 2017-05-16
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多