关于 pygame 模块的简单 SublimeText 问题

easy SublimeText question regarding pygame module

我一直在 OSX 上使用 SublimeText,没有任何问题...直到我尝试导入 pygame。简单的几行代码,如:

print("Hello")
import sys
import pygame

得到以下输出:

    Hello
Traceback (most recent call last):
  File "/Users/andrewjmiller/Desktop/python_work/new_file.py", line 5, in <module>
    import pygame
ImportError: No module named pygame
[Finished in 0.0s with exit code 1]
[shell_cmd: python -u "/Users/andrewjmiller/Desktop/python_work/new_file.py"]
[dir: /Users/andrewjmiller/Desktop/python_work]
[path: /Library/Frameworks/Python.framework/Versions/3.8/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/andrewjmiller/anaconda3/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin]

但是...我确实安装了 pygame,如下所示:

iMac:~ AndyTheAdmin$ python3 -m pip install --user pygame==2.0.0.dev6
Requirement already satisfied: pygame==2.0.0.dev6 in /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages (2.0.0.dev6)

我已经卸载并重新安装了 SublimeText3。接下来我应该尝试什么?

你是 Python 2 和 Python 3 之间差异的受害者。特别是,请注意 Sublime 诊断输出中的一行,它说明了失败的命令:

[shell_cmd: python -u "/Users/andrewjmiller/Desktop/python_work/new_file.py"]

Sublime 附带的 Python.sublime-build 文件告诉 OS 执行命令 python.

在你的示例中它工作的地方(或者更确切地说,你得到确认库已安装的地方):

iMac:~ AndyTheAdmin$ python3 -m pip install --user pygame==2.0.0.dev6

此处您正在执行 python3。如果您要在终端中输入 python --version,Sublime 正在执行的是 Python 2。 Python 的不同版本将它们的包保存在不同的位置,这就是它在一个地方而不是另一个地方工作的原因。

假设是这种情况,解决方案是改用执行 python3 的构建。如果您已经在使用自定义构建系统,那么您可以直接修改它。如果您使用的是 Sublime 附带的构建,创建新构建的最简单方法是:

  1. 使用命令面板中的 View Package File 并打开 Python/Python.sublime-build 以查看现有构建系统的外观,并将整个内容复制到剪贴板。

  2. 使用Tools > Build System > New Build System,将上面复制的内容替换掉,然后将shell_cmd两行中的python换成python3这样他们执行您期望的版本。

  3. 将文件保存在 Sublime 默认的位置(应该是你的 User 包)作为一个具有适当名称的 sublime-build 文件。

保存后,构建系统将可用。您可以从 Tools > Build System select 直接使用它,或者如果您在该菜单中将构建系统设置为 Automatic 下次您进行构建时,Sublime 应该会提示您选择要使用的版本,因为现在有新版本。