python - 将Python 2.7更新到Python 3后,Sublime将无法识别之前导入的模块

标签 python import pygame sublimetext3 pygal

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

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

导入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/等等。下载到包含我所有 python 2.7 程序的某个文件夹中,而不是与我的 Python 3 程序一起。如果这是正确的,我将如何将已下载的程序添加到我的 Python 3 目录或其他目录中?

最佳答案

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

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

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

例如在这里您可以找到 Pygame Python 3.x 版本。

在第一种情况下,当您尝试安装 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 版本不变。

关于python - 将Python 2.7更新到Python 3后,Sublime将无法识别之前导入的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179361/

相关文章:

python - 这个循环是如何工作的 : for item in iter(queue. get, None)?

python - 检测按键 python/pygame 的持续时间

python - 如何在从智能手机接收蓝牙数据的同时使用键盘移动 Pygame 的多边形?

python - 在 pytest 中模拟模块导入

python - 使用管理员身份注册自定义用户模型

PHP 导入 csv 不工作

database - android导入导出数据库

java - 设置类路径时无法加载main方法

compiler-errors - pygame炮弹碰撞检测

python - 是否有可能在一次迭代中或比 O(n*m) 更快地找到字符串中的指定子字符串?