Python 使用pyinstaller将.py文件和.txt文件合并到.exe文件中

Python 使用pyinstaller将.py文件和.txt文件合并到.exe文件中,python,pyinstaller,pyi,Python,Pyinstaller,Pyi,我有一个python程序,它接收两个文本文件作为输入。 我已经使用pyinstaller将这个python程序(一个.py文件)转换为一个.exe文件。运行时的.exe文件给出FileNotFoundError。 但是当.txt文件被复制到存在.exe的路径时,它可以正常工作。我的意图是不复制.txt文件,而是将.txt文件与.exe捆绑在一起,以便.txt文件不可访问。 所有的.txt文件依赖项我想将其与.exe捆绑,最终应该只有一个.exe文件,当我运行它时,它的工作方式应该与我运行pyth

我有一个python程序,它接收两个文本文件作为输入。 我已经使用pyinstaller将这个python程序(一个.py文件)转换为一个.exe文件。运行时的.exe文件给出FileNotFoundError。 但是当.txt文件被复制到存在.exe的路径时,它可以正常工作。我的意图是不复制.txt文件,而是将.txt文件与.exe捆绑在一起,以便.txt文件不可访问。 所有的.txt文件依赖项我想将其与.exe捆绑,最终应该只有一个.exe文件,当我运行它时,它的工作方式应该与我运行python程序时相同。请建议我实现同样目标的方法

我是pyinstaller的新手。我曾尝试将.txt文件添加到.spec文件的数据参数中。但这无法将文本文件复制到my.exe所在的dist文件夹中。但是正如我提到的,我只需要.exe文件。即使将.exe文件共享给无权访问任何文本文件的其他人,该.exe也必须成功运行

a、 数据+=[('D:/Trial/src/readme_text_files/readme1.txt','readme_text_files/readme1.txt','readme_text_files'),('D:/Trial/src/readme_text_files/readme2.txt','readme_text_files/readme2.txt','readme_text_files'), ]

上述代码已添加到.spec文件中,因此,我假设运行时必须将自述文件\u text\u文件复制到存在.exe的文件夹中:
pyinstaller spec_filename.spec

我希望将.txt文件与.exe文件捆绑在一起,因此我执行了以下操作:

  • 我以以下方式编辑了.spec文件:

    a = Analysis(['mainProgram_edited_for_datas.py'],
             pathex=['D:\\Trial\\src'],
             binaries=[],
             datas=[
             ('D:/Trial/src/readme_text_files/readme1.txt','readme_text_files'),
             ('D:/Trial/src/readme_text_files/readme2.txt','readme_text_files'),
             ], ...........(Rest of the .spec file contents as it is)
    
    或者,您可以直接包含目录本身,如下所示:

    datas=[('C:/Users/njv5kor/eclipse-workspace/Trial/src/readme_text_files/','readme_text_files'),
                        ],
    
  • 在python代码中,我添加了以下代码:

    def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try: 
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    
    return os.path.join(base_path, relative_path)
    
    file = resource_path("readme_text_files\\readme1.txt")
    
  • 基本上,pyinstaller将.txt文件绑定到.py文件,并创建一个.exe文件 有关_MEIPASS的详细信息,请参阅链接: