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

时间:2018-11-06 20:16:59

标签: python import pygame sublimetext3 pygal

系统信息:Sublime Text 3.1.1和Mac 10.14 Mojave

我对编程非常陌生,只是在跟着一本书学习Python。我刚刚从python 2.7更新到了python3。现在,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)`

与其他有问题的模块相同。我尝试做很多事情以找到解决方案。很多可能出现的事情是建议确保升华使用的是pygame / pygal / etc的更新版本。但我不知道该怎么做。

此外,我在想pygame / pygal / etc。是在包含我的所有python 2.7程序的某个文件夹中下载的,而与我的Python 3无关。如果正确的话,我该如何将已经下载的程序添加到我的Python 3目录中?

1 个答案:

答案 0 :(得分:2)

您必须将重新安装一次的软件包(重新)安装到 Python 2.x Python 3.x 。您不能将它们用于其他版本。 所有的软件包(大多数都是)都具有特定Python版本的版本。这是获得可靠的Python环境的最清晰方法。 实际上,有时有时会有 2.x 版本,反之亦然,经验丰富的程序员可以对其进行更新,但是这种需求相对很少,而且正如您所说的,肯定不是这种情况。

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

此外,在两个主要版本之间还有迁移工具,但是在这种情况下,我认为这是不必要的。

例如,在这里您可以找到适用于Python 3.x的Pygame版本。

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

>

相反,错误消息发生在Python 3.x环境中。 因此,您必须知道要在哪里安装所需的软件包。 为此,请在命令外壳中运行python --version并检查您收到的消息,例如:

Python 3.6.5 :: Anaconda, Inc

尽管在某些安装了某些系统的系统上,您会发现python将启动Python 3.x,而在其他系统上将启动Python 2.x,而python3将启动Python3.x。 pip/pip3也可能发生类似的情况。如果您有pip3命令或simlink,它将处理Python 3.x等程序包(请参见下面的说明)。 然后,您将知道要在哪个环境中安装给定的软件包。

注意:

最好的方法(也是最可取的)是使用另一个Python版本,然后使用Python virtual environment来使用系统的默认版本,而保持系统默认的Python版本不变。