将我的.py程序转换为.exe之后,我的程序停止运行。我得到了WARNING: Hidden import information pygame._view "not found!"
。我试图导入模块,但是不存在。我在互联网上搜索解决方案,但没有发现任何有用的信息。许多答复说,在较新的pygame版本中不存在此问题,其余答案无济于事。但这是最新版本。有关Pygame和Pyinstaller以及我的代码的更多信息:https://repl.it/@Kadinus/MyGame!
在此站点上,我的.exe程序可以运行,但是如果我直接在PC上启动它,则无法运行。
Pygame版本:1.9.6
Pyinstall版本:3.5
import pygame
print ('Stage 1')
class Person():
def __init__(self):
self.x = 275
self.Y = 275
self.square = pygame.Rect(275, 275, 25, 25)
self.font = pygame.font.Font(None, 40)
#'self.massage = None' is written for example.
self.massage = None
def draw (self):
pygame.draw.rect(window, (0, 0, 0), self.square, 3)
text = self.font.render('Hi', 300, (0, 0, 0), (255, 200, 200))
textpos = text.get_rect(x=10, y=10)
window.blit(text, textpos)
pygame.init()
#Create the window and set its size.
window = pygame.display.set_mode (( 600, 600 ))
window.fill((255, 255, 255))
exit = False
print ('Stage 2')
#--------The problem is here--------
person = Person()
#-----------------------------------
print ('Stage 3')
while exit == False :
pygame.time.delay(5)
person.draw()
#Check if the user closes the window.
for event in pygame.event.get() :
if event.type == pygame.QUIT :
exit = True
pygame.display.update()
print ('Stage 4')
我希望代码可以无错误地运行到最后。
答案 0 :(得分:1)
实际上,我无法重现您的错误。但是我很难冻结使用pygame
的应用程序,这也可以解决您的问题。
有时候,更好的方法是手动包含模块。首先,您需要使用exclude-module
排除模块,并使用Tree
类将模块手动提供给最终的可执行文件。同样,使用这种方法,某些Python库会丢失,需要由hidden-import
或Tree
添加。例如,在这里我将xml
添加为Tree
,将queue
添加为hidden-import
。
import`. Use below spec file:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['script.py'],
pathex=['C:\\Users\\Rahimi\\Desktop\\test'],
binaries=[],
datas=[],
hiddenimports=['queue'],
hookspath=[],
runtime_hooks=[],
excludes=['pygame'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += Tree("<python_path>/Lib/site-packages/pygame/", prefix= "pygame")
a.datas += Tree("<python_path>/lib/xml/", prefix= "xml")
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='script',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
runtime_tmpdir=None,
console=True )
切记根据当前环境编辑路径。最后,使用以下命令生成可执行文件:
pyinstaller script.spec