问题
我试图把一个python文件变成一个EXE文件,但是我似乎每次都遇到同样的问题,无论是CX_Freeze还是PyInster。我只是尝试使用pyInster和我做了一个EXE文件使用命令
pyinstaller --onefile thepyfile
一切正常。它在dist文件中创建exe。但是,当我打开exe时,它会显示一个命令窗口,然后很快关闭。我设法捕获了我在使用打印屏幕时遇到的错误,它显示pygame错误:无法打开image family。jpg。我正在使用pygame模块。
我试过什么?
iv确保图像位于与我的python文件相同的目录和文件夹中。我的. py工作正常,当我运行它,它只是exe。不管怎样,只是为了确保在我加入路径的路径中加载图像没有问题
os.path.join
它同样适用于py文件,但在exe中不起作用。我还检查了我是否正确安装了pyinstaller,它适用于不涉及导入图像的其他exe程序。我还尝试创建一个文件夹,然后使用
os.path.join(folder,file)
但它在py文件中也能工作,但在pyinstaller/cx\u freeze exe中不能工作。
一条线索?
当我使用CX__;u freeze时,我发现pygame也无法导入图像。然而,它给了我一个更大的错误案例,不确定它是否有用,但它可能是一个线索?
请帮忙
我已经遇到这个问题5个多星期了,我迫切需要帮助。
一些代码
这就是导入图像的方式(同样在py文件中工作,但在exe文件中不工作)
family_image = pygame.image.load(os.path.join('folder',"family.jpg")).convert()
如果需要这里我的cx_Freezesetup.py这也使得exe文件还给我图像不能加载错误。
import cx_Freeze
import sys
import pygame
import random
import math
import os
os.environ['TCL_LIBRARY'] = "C:\\Program Files\\Python35\\tcl\\tc18.6"
os.environ['TK_LIBRARY'] = "C:\\Program Files\\Python35\\tcl\\tk8.6"
base = None
if sys.platform == 'win32':
base = "Win32GUI"
executables = [cx_Freeze.Executable("Treg&Shelly.py",shortcutName="Cards",shortcutDir="DesktopFolder",base = base)]
cx_Freeze.setup(
name = "HAPPY NEW YEARS",
options = {"build_exe":{"packages":["pygame","random","math"],"excludes" : ['tcl','ttk','tkinter','Tkinter'],"include_files":["family.jpg","newyears.png"]}},
version = "0.01",
description = "New Years Card",
executables = executables
)
注意事项
我的所有图像都在一个单独的文件夹中,但可以通过我的python文件访问。
我也在使用Python3.5
谢谢你的回复
看看这句台词:
options={“build_exe”:{“packages”:[“pygame”、“random”、“math”],“excludes”:[“tcl”、“ttk”、“tkinter”、“tkinter”],“include_files”:[“family.jpg”、“newyears.png”]},
考虑:
我的所有图像都在一个单独的文件夹中
include_files部分在基本目录中指定两个文件,而不是在单独的文件夹中。
尝试以下方法:
选项={build_exe:{包:[pyplay,随机,数学],排除:['tcl','ttk','tkinter','Tkinter'],include_files:[os.path.join("ImageDir","family.jpg"),os.path.join("ImageDir","newyears.png ")]}},
值得注意的是,这将把文件放在基本目录中。考虑为每个文件提供一个(输入,输出)元组,而不只是输入,以指定您希望这些文件在何处去。
options={“build_exe”:{“packages”:[“pygame”、“random”、“math”],“excludes”:['tcl'、'ttk'、'tkinter'、'tkinter'、'tkinter'],“include_文件]:[(os.path.join(“imageDir”、“family.jpg”)、os.path.join(“imageDir”、“family.jpg”)、(os.path.join(“imageDir”、“newyears.png”)、os.path.join(“imageDir”、“newyears.png”))},
您可以使用py2exe将python转换为可执行文件。到目前为止,这种方法对我很有效。
pte.py
是C:\Python\toexe中的脚本文件
>
导航到C:\Python\toexe从distutils。核心导入设置
导入py2exe
CLI程序的设置(控制台=['xxx.py'])##
xxx.py ']) ###
执行此命令:C:\Python\toexe
如果您创建了一个文件夹捆绑包(删除--onefile参数),那么问题可能是这样的:
运行一个文件包时,将创建一个临时文件夹结构。临时文件夹的名称是在运行时创建的,捆绑时不知道。因此,路径未知。
然而,Pyinstaller添加了一个属性sys_MEIPASS
,其中包含临时文件夹的绝对路径。因此,尝试以下方法:
if getattr(sys, 'frozen', False):
wd = sys._MEIPASS
else:
wd = ''
family_image = pygame.image.load(os.path.join(wd,'folder',"family.jpg")).convert()
另请参阅PyInster文档。
我已经安装了boost库,它们位于中。我认为问题与可执行文件只在它所在的目录中查找有关,因为当我在其中粘贴'libboost_atomic.dylib'时,它不再介意它了。不幸的是,它抱怨找不到下一个boost库。 有没有一个简单的方法来解决这个问题?
我正在尝试创建一个基本的OS X框架,现在我只创建了一个测试框架:,我正在尝试将它导入到一个全新的OS X应用程序项目中。 我已经构建了.framework文件并将其导入到新项目中,框架看起来链接良好,并且我可以引用添加到framework build phases部分的公共头文件。 但是,当我尝试运行容器应用程序时,我得到以下错误: 在搜索了一下之后,我意识到我需要在我的容器应用程序构建阶段中添
这仅适用于Mac OS Catalina 10.15.4 尝试在nano$home/.zshenv中设置环境变量 路径如下所示export java_home=$home/library/java/javaVirtualMachines/jdk-14.0.1.jdk 尝试删除JDK,然后重新安装,未成功 我在终端中输入java-version并得到错误。 错误:dyld:未加载库:@rpath/l
我使用tkinter制作了一个简单的Python[3.5.2]程序。当我在上面使用PyInstaller[3.2]时,它会给我一大堆'lib not found'警告。示例: 3218警告:找不到lib:api-ms-win-crt-runtime-l1-1-0.dll依赖项C:\python\vcruntime140.dll 3312警告:找不到lib:api-ms-win-crt-conver
我在从控制器加载javaFX中的图像时遇到了一些麻烦。 我把一些图像放在src/文件夹中,甚至放在img/文件夹中,但仍然得到“无效URL或未找到资源”。 但我无法检索图像“java.lang.IllegalArgumentException:无效URL或未找到资源” 谢谢你的帮助