Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打开Pygame程序的EXE会导致导入错误_Python_Pygame_Py2exe - Fatal编程技术网

Python 打开Pygame程序的EXE会导致导入错误

Python 打开Pygame程序的EXE会导致导入错误,python,pygame,py2exe,Python,Pygame,Py2exe,我用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.

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

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

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

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

我问题的第一部分(): 我通过编辑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上找到了答案

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

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

第一:将微软Visual C++库更新为最新的.c/p> 第二:如果您的可执行程序需要类似的图像或字体,请将它们包含到dist文件夹(创建.exe文件的地方)

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


使用了Python2.7x64pygamepy2exe

不确定是否存在错误,但这肯定是不正确的:
'C:\WhaleTunes\…'
。改为使用前斜杠、原始字符串或双反斜杠;分别是:
'C:/WhaleTunes/..
r'C:\WhaleTunes\\'
,或
'C:\\WhaleTunes\\\..'
。如果您在py2exe方面遇到问题,试一试如何?我以前用过它来部署pygame应用程序。有一些困难,但没有什么是无法克服的。