【问题标题】:Upgrading Python 3 on Windows broke all my downloaded modules在 Windows 上升级 Python 3 破坏了我下载的所有模块
【发布时间】:2018-01-19 07:55:03
【问题描述】:

我使用的是 Windows 7,并且我正在更新补丁。我使用的是 Python 3.5.2 并想升级到 3.6,所以我去了 Python 站点,下载了适用于 Windows 的 3.6.4.exe,然后运行它。 Python 似乎工作正常并且是 3.6.4,但尝试导入我正在使用的任何包(pandas、numpy、tensorflow 等)现在给了我ModuleNotFoundError: No module named <whichever module it was>。此外,pip list 现在只显示 pip 和 setuptools。

这似乎是一个已知问题,例如近一年前的this,这表明我应该“卸载 python 绑定并重新安装”,但我无法弄清楚这意味着什么。幸运的是,我仍然可以使用py -3.5 访问 3.5.2,然后我的导入工作。谁能告诉我如何在 3.6 中解决此问题,而无需手动重新安装所有模块?

我在想我可能应该通过 pip 升级;似乎这是可能的,但出于某种原因可能是个坏主意?经过进一步调查,看起来我应该做的是用pip freeze > requirements.txt 保存我的要求,然后在安装新的Python 后用pip install -r requirements.txt 恢复它们。是这样吗?

【问题讨论】:

  • 您在使用虚拟环境吗?这些类型的依赖问题就是它们的目的。作为一般规则,在你的机器上保持你的 python(s) 尽可能干净,并在你的应用程序的虚拟环境中安装所有 pypy 包。我不能确定,但​​你可能不需要对你的机器做任何事情,除了设置一个虚拟环境并重新安装你的包。搜索“virtualenv”、“virtualenvwrapper”和“add2virtualenv”。
  • 我认为我不需要 virtualenv,因为我只是想用 3.6 替换 3.5,而不是同时维护它们。我正在调查它,但你能告诉我在这种情况下我会如何使用 virtualenv 吗?我意识到我可以通过手动重新安装所有软件包来解决问题,但如果可能的话,我想避免这种情况。

标签: python-3.x upgrade


【解决方案1】:

很难说您是否有安装问题,但如果我在您的位置上,我会尝试这样做。

  1. 创建一个虚拟环境; docs

    c:>c:\Python36\python -m venv c:\path\to\myenv

  2. 激活您的虚拟环境

    C:> \Scripts\activate.bat

  3. 从激活的环境中运行您的应用程序。每次遇到导入错误时,请从活动环境中执行 pip-install。 (对于您自己的模块,您可能需要在 'activate.bat' 中修改 PYTHONPATH)

  4. 一旦您的应用程序再次运行,请执行您的 pip freeze > requirements.txt,并将其保留在您的项目中。
  5. 每次运行应用程序时,都应在激活的虚拟环境中进行。

这将为您提供一个干净的 requirements.txt,其中不包含来自其他项目的一堆垃圾。然后,当您转到 3.7 时,只需创建 virtualenv 并运行您的 requirements.txt 和 wala!

我怀疑您的问题根本不是针对正确的解释器运行,从虚拟环境中运行至少应该排除它。

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2021-03-05
    • 2014-09-07
    • 2021-05-22
    相关资源
    最近更新 更多