如何解决使用PyInstaller创建EXE文件时的冻结路径
我正在使用PyInstaller从python脚本创建EXE文件。
在我的脚本上,我正在使用tkinter创建一个GUI,并在该GUI上添加了一个favicon和一个图像。 因为该代码可由我的团队的任何成员在任何计算机上使用,所以图像和图标的路径应尽可能通用。 因此,我在os库中使用了以下
os.path.dirname(__file__)
还有
os.path.abspath(os.getcwd())
所以我的代码如下:
import os
images_path = os.path.dirname(__file__)
favicon_name = 'favicon.ico'
root.iconbitmap(f'{images_path}/img/{favicon_name}')
logo_name = 'logo.png'
image = Image.open(f'{images_path}/img/{logo_name}')
image = image.resize((450,120),Image.ANTIALIAS)
logo_image = ImageTk.PhotoImage(image)
logo_image_label = tk.Label(image=logo_image)
logo_image_label.pack()
当直接从命令行调用脚本时有效,但是当使用PyInstaller创建EXE文件时,它将在运行EXE文件的文件夹中搜索图标和图像。 这意味着图像和图标应该位于EXE文件所在位置的img文件夹中。
我也尝试使用pathlib失败
import pathlib
pathlib.Path(__file__).parent.absolute()
和
import pathlib
pathlib.Path().absolute()
因为我希望能够将EXE文件单独发送给将要使用它的任何人,而无需也发送图像和图标,所以我希望在EXE创建时“冻结”此路径,因此图像和收藏夹图标无需与EXE文件位于同一文件夹中,也无需与EXE文件位于同一台计算机中。
如果我使用硬代码路径,例如“ C:/documents/pictures/logo.png”,则它将运行并且即使在运行EXE文件时该图片也不会显示在该图片中。运行EXE的计算机或设备。但是如前所述,对路径进行硬编码不是解决方案,因为脚本和PyInstaller应该可以在任何计算机上运行。
将图像和图标和EXE文件一起发送是不可行的,因为这会带来一些问题,因为用户可以更改图标和图像,而我们不会。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。