代码之家  ›  专栏  ›  技术社区  ›  rescdsk

在对底层Python进行补丁级升级之后,virtualenv还会继续工作吗?

  •  3
  • rescdsk  · 技术社区  · 7 年前

    我想将我的系统Python从3.6.2升级到3.6.4以获得错误修复。这会破坏我用3.6.2构建的虚拟环境吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Azsgy    7 年前

    和往常一样,答案是“视情况而定”。

    这个 virtualenv pipenv 工具将所选python版本复制到 env/bin/ 。这意味着virtualenv不会接收点发布。

    $ file env/bin/python3
    env/bin/python3: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV)
    

    推荐的 venv (以前 pyvenv )然而,该工具(在linux上)创建了一个指向它所使用的python版本的符号链接(可以将其视为文件系统的“重定向”)。这意味着,如果原始可执行文件被替换,则virtualenv将自动接收点版本:

    $ file env/bin/python3.6
    env/bin/python3.6: symbolic link to /usr/bin/python3.6
    

    此行为是可调的,并且 venv公司 即使不使用符号链接,也可以升级现有版本:

    $ python3.6 -m venv -h
    [...]
      --symlinks            Try to use symlinks rather than copies, when symlinks
                            are not the default for the platform.
      --copies              Try to use copies rather than symlinks, even when
                            symlinks are the default for the platform.
      --upgrade             Upgrade the environment directory to use this version
                            of Python, assuming Python has been upgraded in-place.
      [...]
    

    据我所知 virtualenv公司 该工具没有此类功能,这可能是建议使用该工具的原因之一 venv公司 而是现在。