python - 由于文件的路径,.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!
有谁知道出了什么问题以及如何创建可执行文件?:(
解决方案
使用该--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)
推荐阅读
- ejbca - 将 EJBCA 安装为 CA
- sql - 选择某些列相同但其他列不同的行
- macos - 无法打开rabbitmq localhost UI
- algorithm - 无限迷宫生成算法
- bloomberg - 是否可以在彭博社中批量下载财报电话会议记录和音频
- asp.net-core - 在 Asp.Net Core 5.0 中注册 HttpClient 时注入 ILogger
- git - 如何将 AzureDevops 配置为仅在代码提交中的特定分支上提交
- python - Python:matplotlib.pyplot.show() 未显示绘图
- reactjs - Algolia InstantSearch 没有响应
- javascript - 从网站获取 javascript 函数中随机生成的字符串