【问题标题】:Keeping Installed Packages When Updating Python更新 Python 时保留已安装的软件包
【发布时间】:2020-03-05 14:14:22
【问题描述】:

我在 Windows 10 上安装了 python 3.7。升级到 3.8 的推荐方法似乎是重新安装,这意味着我将安装两个版本。我不需要这两个版本,但我想保留我为 3.7 版安装的所有软件包。

请问我该如何实现? 3.8 的新路径变量也会替换 3.7 的路径变量吗?

这样一个常见用例的过程似乎异常复杂。我错过了什么吗?

【问题讨论】:

  • 您是否看到this 指出“如果您从 3.x 升级到 3.y(次要),那么您将收到“立即安装”的提示。在这种情况下,您不是升级,但您正在安装新版本的 Python。"
  • 我不需要这两个版本,但我想保留我为 3.7 版安装的所有软件包。 为什么?您不使用虚拟环境吗? 这样一个常见用例的过程似乎异常复杂。我真的很想知道它到底有多普遍,不幸的是我不知道任何相关的统计数据。 我错过了什么吗? :p

标签: python installation


【解决方案1】:

一种方法是运行:

python3.7 -m pip freeze > installed.txt

然后,在安装新的 Python 版本后,您可以安装包:

python3.8 -m pip install -r installed.txt

您为旧 Python 安装安装的软件包可能与新版本不兼容。因此,保留两个 Python 安装,然后为每个项目使用虚拟环境会更安全。

您可以为每个项目创建一个 virtualenv,使用该项目所需的 Python 版本,并仅在该特定项目的 virtualenv 中安装您的依赖项。这样可以避免项目 A 需要某个包的旧版本而项目 B 需要更新版本的情况。如果您在全局范围内安装所有软件包,在这种情况下您会遇到问题。

另见What is a virtualenv, and why should I use one?

【讨论】:

    【解决方案2】:

    简单的解决方案是在 CMD 中做

    pip freeze > packages.txt
    

    这会将您当前的所有包写入文本文件“packages.txt”

    然后像卸载任何 Windows 程序一样卸载 Python 3.7,然后安装 Python 3.8 并在 CMD 中执行

    pip install -r packages.txt
    

    这将安装您之前拥有的所有软件包。

    虽然我建议使用conda,因为它会为您处理 Python 版本和包以及环境。

    【讨论】:

      【解决方案3】:

      我建议您转而使用 conda 来管理您的环境。

      https://docs.conda.io/projects/conda/en/latest/user-guide/install/windows.html

      我参与过的大多数涉及 python 的开发项目的当前想法是,版本和库是基于每个项目指定的。 Conda 允许您冻结环境,使其更便携。您可以生成一个 environment.yml 文件,允许某人从头开始重新创建您的环境,并且您可以只维护给定项目所需的包。

      根据您最初的问题,您可以将 PYTHONPATH 设置为指向旧目录和新目录。我不能保证这些库可以正常工作,因为可能存在版本兼容性问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-15
        • 2021-05-13
        • 1970-01-01
        • 2021-10-17
        • 2015-03-12
        • 2015-07-07
        • 2017-10-23
        相关资源
        最近更新 更多