将 Python 2.7 更新为 Python 3 后,Sublime 将无法识别以前导入的模块

After updating Python 2.7 to Python 3, Sublime won't recognize previously imported modules

系统信息:Sublime Text 3.1.1 和 Mac10.14 Mojave

我对编程很陌生,只是跟着书学习Python。我刚刚从 python 2.7 更新到 python 3。现在,Sublime 将无法识别我之前导入和使用的模块,即 pygame 和 pygal。当我尝试导入它们时,出现以下错误:

import pygame

Traceback (most recent call last):
  File "/Users/MyNameHere/Desktop/python_work/data_visualization/python_repos.py", line 1, in <module>
    import pygame
ModuleNotFoundError: No module named 'pygame'

(其中 python_repos.py 是我正在使用的当前程序)。

我知道我已经安装了这些模块,因为当我尝试安装 pygame 时,例如,在终端中使用 pip install pygame,我得到:

`Requirement already satisfied: pygame in /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (1.9.4)`

其他相关模块也是如此。我已经尝试做很多事情来找到解决方案。经常出现的一件事是确保 sublime 使用 pygame/pygal/etc 的更新版本的建议。但我不知道该怎么做。

此外,我在想也许 pygame/pygal/etc。下载到包含我所有 python 2.7 程序的某个文件夹中,而不是我的 Python 3 程序。如果这是正确的,我将如何将已经下载的程序添加到我的 Python 3 目录或其他目录中?

您必须(重新)安装您安装过一次的软件包到 Python 2.xPython 3.x。您不能将它们用于其他版本。 所有软件包(大部分)都具有特定 Python 版本的版本。这是获得可靠 Python 环境的最清晰方法。 实际上有时有 2.x 版本,反之亦然,经验丰富的程序员可以更新 him/herself,但这种需求相对较少,正如你所说,情况并非如此当然。

因此,您所要做的就是安装实际软件包的 Python 3.x 版本。

另外两个主要版本之间有迁移工具,但在这种情况下我认为没有必要。

例如,您可以在此处找到 Python 3.x 的 Pygame 版本。

在第一种情况下,当您尝试安装 Pygame 时,它处于 Python 2.x 环境中,那是因为您收到消息,要求已经满足,因为正如您所写,您已经安装了它。

相反,错误消息发生在Python 3.x 环境中。 所以你必须知道你在哪里安装所需的包。 这个检查点是命令 shell 中的 运行 python --version 并阅读您收到的消息,例如:

Python 3.6.5 :: Anaconda, Inc

尽管在某些安装了某些系统的系统上您会发现 python 将启动 Python 3.x 而在其他系统上将启动 Python 2.x 和 python3 将开始 Python 3.x。 pip/pip3 也可能发生类似情况。如果您有 pip3 命令或 simlink,它将处理 Python 3.x 等的包(请参阅下面我的注释)。 然后你就会知道,你正在尝试安装给定包的环境。

注:

最好的方法 - 也是最可取的 - 使用另一个 Python 版本然后使用系统默认版本 Python virtual environment 保留系统默认 Python 版本是。