打开我的Pygame程序的一个EXE会导致导入错误

2024-05-19 02:08:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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']

Tags: notextimportviewadminplaceredexe
2条回答

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

几周后(甚至在这之前就有过这个问题),我很高兴地说我解决了这个问题!:)

我问题的第一部分http://i.stack.imgur.com/WpkjR.png): 我通过编辑setup.py脚本并在其中添加“excludes”部分解决了这个问题。这就成功地生成了可执行文件!

修改的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上找到了答案。

我很高兴我找到了解决这些问题的方法,如果你遇到同样的问题,我会帮助你。

小提示(我也做过的事情):

1st: update your Microsoft Visual C++ library to the latest one.

2nd: if you have images or fonts similar that your executable program needs, include them to dist folder (where your .exe file has been created).

3rd: when you are making your .exe file, include all needed files to the folder where your setup.py script is (all files and directories that your main script uses).

使用了Python 2.7 x64、pygame和py2exe。

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

相关问题 更多 >

    热门问题