使用pyinstaller创建的exe文件无法识别外部源

时间:2016-09-20 11:08:46

标签: python python-3.x exe pyinstaller

我已成功创建了一个带有Pyinstaller的exe文件。但是,当我运行exe文件并填写路径,文件&弹出exe文件的消息框中的sheetnames表示我错误输入了文件名或sheetname的文件。我显然是自己键入此消息,因此我的问题是:为什么exe文件在查找我的文件时遇到麻烦,而当我在PyCharm中执行完全相同的操作时运行它没有问题?

data-flag

希望有人对此有具体的答案。

谢谢,

的Jeroen

1 个答案:

答案 0 :(得分:0)

定义一个翻译路径的函数。

import os, sys

def resource_path(relative_path):
    if hasattr(sys, "_MEIPASS"):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

使用此功能可以扭曲文件路径,例如:

bingo_music = resource_path('resources/bingo.wav')
demo_file = resource_path('texts/demo.txt')

.spec文件中,将列表放在exe = EXE()

[('resources/bingo.wav', r'C:\Users\Administrator\resources\bingo.wav', 'music'),
[('texts/demo.txt', r'C:\Users\Administrator\texts\demo.txt', 'text'),],

将您在项目中使用的每个文件写为元组(relative_path, absolute_path, folder_name_in_bundled_app),第三个参数是捆绑应用程序中文件将被复制到的文件夹的名称。然后文件将正常工作。