首页 > 解决方案 > 由于文件的路径,.exe 显然不起作用

问题描述

我用pygame做了我自己的小游戏。我正在尝试制作 .exe 和安装程序。我正在使用 cmd 控制台创建一个 .exe。我在打字

pyinstaller --onefile -w NameOfTheFile.py

或者

pyinstaller --onefile NameOfTheFile.py

并且确实创建了.exe。为了使游戏独立于计算机运行,我使用了

PathToDir = os.path.dirname(os.path.abspath(__file__))

获取当前目录的路径。之后我写:

TloIMG = pygame.image.load(PathToDir+"\\Pictures\\Sceneria1.png")

加载背景图片,类似地加载任何其他文件。我的游戏可以在不同的目录和计算机上运行,​​所以代码很好。但是创建一个之后。exe它不起作用。cmd控制台 说:

Traceback (most recent call last):

File "Robocop.py", line 314, in <module>

TloIMG = pygame.image.load(PathToDir+"\\Pictures\\Sceneria1.png")

FileNotFoundError: No such file or directory.

[9780] Failed to execute script 'Robocop' due to unhandled exception!

有谁知道出了什么问题以及如何创建可执行文件?:(

标签: pythonpyinstaller

解决方案


使用该--onefile参数时,不能使用相对路径,因为pyinstaller将捆绑的数据解压缩到临时文件夹,文件夹的路径存储在_MEIPASS环境变量中。

无论是在可执行文件还是在开发环境中执行,以下函数都应该为您返回正确的路径。

import sys
import os

def resource_path(relative_path):
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

推荐阅读