【问题标题】:Pygame + Pyinstaller = ImportError: No module named 'pygame'Pygame + Pyinstaller = ImportError:没有名为“pygame”的模块
【发布时间】:2016-11-07 18:33:29
【问题描述】:

我上周开始学习 Python。我是新手,没有太多编码经验。

我使用 Pygame(安装在我的虚拟环境中)创建了一个“Space Invader”游戏,当我使用 Python2.7 as 启动它时它可以完美运行

python myfile.py

但是,如果我将其启动为

python3 myfile.py

我有一个 Traceback 错误

ImportError: No module named 'pygame'

很酷,我可以处理它,即使我不知道为什么。但是,当我使用pyinstaller myfile.py 时,它会使用 Python3 将程序转换为独立的可执行文件

115 INFO: PyInstaller: 3.2
115 INFO: Python: 3.5.0b4
125 INFO: Platform: Darwin-15.5.0-x86_64-i386-64bit
126 INFO: wrote mydir/myfile.py

因此在我启动应用程序时出现同样的错误。 我正在开发 Mac OSX El Captain。

问题是: 为什么它不适用于 Python3? 如何在 Python2.7 中使用“pyinstaller”?

欢迎所有关于使用“人类”语言进行包管理的解释。

附:我尝试了 cx_Freeze 和 bbFreeze,但我总是遇到以下错误。我有一个 Mac OSX El Captain。

OSError: [Errno 1] Operation not permitted: '/mydir/MacOS.so'

【问题讨论】:

  • 不知道这在 Mac 上是如何工作的,但问题是必须为每个 Python 单独安装 PyGame(和任何其他包)。您只为 Python 2 安装了它。您需要为 Python 3 安装它。
  • 您提到了virtual 环境。您只需要激活python2.7 所在的环境即可。请注意,El Capitan 还带有自己的 python 2.7。确保您不会混淆另一个。
  • 大家好,有人可以帮我吗? *.com/questions/38244537/…

标签: macos python-2.7 python-3.x pygame pyinstaller


【解决方案1】:

Python 库是为 Python 2 和 Python 3 单独安装的。看起来您只为 Python 2 安装了 pygame。常规的 pip install [package] 在大多数设置中只安装 Python 2 版本。一般来说,出于某种原因,一切都将 Python 2 视为“默认”版本,包括其他主要的基于 Unix 的操作系统。

  1. 首先,激活您的 virtualenv(在 venv 目录中的source ./bin/activate)。

  2. 您的 virtualenv 中的
  3. pip3 install hg+http://bitbucket.org/pygame/pygame(或者可能是 pip-3.5)应该可以修复它。

  4. 如果它抱怨找不到 hg,请以某种方式安装 Mercurial(例如,如果您有 MacPorts,请安装 sudo port install mercurial)。

  5. 试试看。运行python3,然后输入import pygame

来源:

  • 从 pip 安装 pygame:Unable to install Pygame using pip
  • 我正在使用 OS X El Capitan。我刚刚测试了我的答案,我可以打开 Python 3 解释器和import pygame

【讨论】:

  • 好的。我听从了你的指示。为此,我创建了另一个虚拟环境,并将 pygame 安装为pip3 install hg+bitbucket.org/pygame/pygame;。但是,要使pyinstaller 正常工作,我必须在运行之前使用pip3 install pyinstaller 将它安装在我的虚拟环境中。
  • 现在我还有一个小问题。当我在虚拟环境中运行可执行文件时,它可以正常工作,但是当我在本地环境中运行时,出现以下错误pygame.error: Couldn't open images/ProEuro1.pngpygame 是否包含代码中使用的图像?如果没有,我该如何管理它们?
  • 我不熟悉pygamepyinstaller,但从错误消息来看,我认为pygame 不包含源中的图像。您的工作目录中的某处必须有一个图像目录。它需要与打开 Python 文件的目录位于同一目录中。如果你能找到它,你可以试着移动它,但除此之外,你可能需要多看看周围。