【问题标题】:Opening an EXE of my Pygame program gives me import errors打开我的 Pygame 程序的 EXE 时出现导入错误
【发布时间】:2011-06-26 04:58:35
【问题描述】:

我用pygame代码做了一个MP3播放器:

from Tkinter import *
import pygame
import glob
import tkFont
songs=[]
for x in glob.glob('C:\WhaleTunes\Downloaded/*mp3'):

    songs.append(x)
Admin=Tk()
num=0
plpa=-1
songas=Label(Admin,text='',bg='red')
songas.place(relx=0.0,rely=0.7)
def play(number):

    pygame.mixer.music.unpause()
    pygame.mixer.music.load(songs[number])
    pygame.mixer.music.play()

    songas.configure(text=songs[number])


def pause():
     pygame.mixer.music.pause()
def Pre():
    global num
    if num == 0:
        z = len(songs)
        num=z
        num+=1
    num-=1
    play(num)
def Next():
    global num
    num+=1
    play(num)
#init pygame mixer
pygame.mixer.init()
#atach all buttons & labels
fons=tkFont.Font(family="bold", size=40)
fon=tkFont.Font(family="Helvetica", size=20)
tit=Label(Admin,text='Mp3 Player',font=fons,fg='grey',bg='red')
tit.place(relx=0.2,rely=0.0)
playnpause=Button(Admin,text='Play',command=lambda:play(num),fg='yellow',bg='red',font=fon)
playnpause.place(relx=0.0,rely=0.4)
last=Button(Admin,text='Previous',command=Pre,fg='yellow',bg='red',font=fon)
last.place(relx=0.2,rely=0.4)
first=Button(Admin,text='Next',command=Next,fg='yellow',bg='red',font=fon)
first.place(relx=0.5,rely=0.4)
pauses=Button(Admin,text='Pause',command=pause,fg='yellow',bg='red',font=fon)
pauses.place(relx=0.7,rely=0.4)
Admin.minsize(width=500, height=200)
Admin.maxsize(width=500, height=200)
Admin.configure(bg='red')
Admin.mainloop()

我试图用这段代码把它放到一个 exe 中:

from distutils.core import setup
import py2exe

setup(console=['mp3player.py'])

当我运行 mp3player.exe 时,我收到一堆导入错误:

C:\Users\P'sao\Downloads\dist\mp3player.exe:2: RuntimeWarning: import display: N
o module named _view
(ImportError: No module named _view)
C:\Users\P'sao\Downloads\dist\mp3player.exe:2: RuntimeWarning: import draw: No m
odule named _view
(ImportError: No module named _view)
C:\Users\P'sao\Downloads\dist\mp3player.exe:2: RuntimeWarning: import image: No
module named _view
(ImportError: No module named _view)
C:\Users\P'sao\Downloads\dist\mp3player.exe:2: RuntimeWarning: import pixelcopy:
 No module named _view
(ImportError: No module named _view)
C:\Users\P'sao\Downloads\dist\mp3player.exe:2: RuntimeWarning: import transform:
 No module named _view
(ImportError: No module named _view)

有人知道如何解决这个问题吗?

当我编译所有内容时,我得到了这个错误:

The following modules appear to be missing
['AppKit', 'Foundation', 'Numeric', 'OpenGL.GL', '_scproxy', 'copyreg', 'dummy.P
rocess', 'numpy', 'pkg_resources', 'queue', 'winreg', 'pygame.sdlmain_osx']

【问题讨论】:

  • 不确定错误,但这绝对不正确:'C:\WhaleTunes\...'。改用正斜杠、原始字符串或双反斜杠;分别为:'C:/WhaleTunes/...'r'C:\WhaleTunes\''C:\\WhaleTunes\\...'
  • 如果您在使用 py2exe 时遇到问题,不妨试一试cx_Freeze?我以前用它来部署 pygame 应用程序。有一些困难,但没有什么不可克服的。

标签: python pygame py2exe


【解决方案1】:

解决方案是将import pygame._view 添加到主源文件的顶部。任何包装器都应该在那之后工作。我在使用 cx_Freeze、py2exe 和 pyInstaller 时遇到了这个问题。这是一个严重的错误,在尝试打包 pygame 程序时会影响许多 exe 打包程序。

【讨论】:

    【解决方案2】:

    之前遇到过同样的问题,自己找到了解决办法:

    几周后(甚至之前也遇到过这个问题)我很高兴地说我解决了这个问题! :)

    我的问题的第一部分 (http://i.stack.imgur.com/WpkjR.png): 我通过编辑 setup.py 脚本并在其中添加“排除”部分来解决它。这导致成功制作可执行文件!

    修改 setup.py 脚本:

    from distutils.core import setup
    import py2exe
    setup(windows=['source_static.py'], options={
              "py2exe": {
                  "excludes": ["OpenGL.GL", "Numeric", "copyreg", "itertools.imap", "numpy", "pkg_resources", "queue", "winreg", "pygame.SRCALPHA", "pygame.sdlmain_osx"],
                  }
              }
          )
    

    所以,如果您有类似的问题,只需将那些“缺失”的模块放入此“排除”行。

    第二部分:

    在我成功制作可执行文件后,我遇到了下一个问题:"应用程序以异常方式请求运行时终止它。请联系..."。经过几天和几天的搜索和思考如何解决另一个问题,我找到了一种方法。我无法相信这个问题是如此荒谬。问题出在我的代码中,字体定义:

    font1 = pygame.font.SysFont(None, 13)
    

    在将“None”更改为某个系统字体名称(例如“Arial”(必须是字符串))并编译后,我不敢相信我的 .exe 文件能正常工作!

    font1 = pygame.font.SysFont("Arial", 13)
    

    当然,你可以使用自己的字体,但你必须指定它的路径并在你的程序中定义它。

    因此,对于所有遇到此问题的人,请尝试以下步骤,希望您能成功。 我真的希望这会对您有所帮助,因为我已经浪费了几天和几周的时间来尝试解决这些问题。我什至尝试使用所有版本的 python 和 pygame 以及许多其他 .exe 构建器和设置脚本来制作我的 .exe 文件,但没有运气。除了这些问题,我之前也遇到过很多其他问题,但我在 stackoverflow.com 上找到了答案。

    我很高兴我找到了解决这些问题的方法,并在您遇到相同问题时为您提供帮助。

    小技巧(我也做过):

    第一个:将您的 Microsoft Visual C++ 库更新到最新版本。

    第二个:如果您有可执行程序所需的图像或字体,请将它们包含到 dist 文件夹(您的 .exe 文件已在其中创建)。

    第三:当你制作你的 .exe 文件时,将所有需要的文件包含到你的 setup.py 脚本所在的文件夹中(你的主脚本使用的所有文件和目录)。

    使用 Python 2.7 x64pygamepy2exe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 2019-02-25
      • 2017-09-07
      • 2020-09-07
      相关资源
      最近更新 更多