我有一个python程序,接收两个文本文件作为输入。我已经使用pyinstaller将这个python程序(一个.py文件)转换为一个.exe文件。运行时的.exe文件给出了FileNotFoundError。但是,当.txt文件被复制到.exe存在的路径时,它工作得很好。我的目的不是复制.txt文件,而是将.txt文件与.exe捆绑在一起,这样就无法访问.txt文件。所有.txt文件依赖项--我想将它与.exe捆绑在一起--最终应该只有一个.exe文件,当我运行它时,它的工作方式应该和运行.exe程序时一样。请给我建议实现相同目标的方法。
我对pyinstaller很陌生。我尝试将.txt文件添加到.spec文件中的数据参数中。但这无法将文本文件复制到显示我的.exe的dist文件夹中。但是,正如我已经提到的,我只需要.exe文件。即使将.exe文件共享给其他无法访问任何文本文件的人,.exe也必须正常运行。
a.datas+=('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文件中,因此我假设当您运行: pyinstaller spec_filename.spec时,必须将readme_text_files复制到.exe存在的文件夹中。
发布于 2019-10-20 14:45:25
我希望.txt文件与.exe文件捆绑在一起,因此我做了以下工作:
A=Analysis(‘mainProgram_edited_for_ datas= .for’,pathex=‘D:\for\src’,binaries=[],datas=datas= 'readme_text_files'),('D:/Trial/src/readme_text_files/readme2.txt','readme_text_files'),.( .spec文件内容的其余部分)
或者只需直接包含目录本身,如下所示:
datas=('C:/Users/njv5kor/eclipse-workspace/Trial/src/readme_text_files/',‘readme_text_files’,
def resource_path(relative_path):“获取资源的绝对路径,为dev和PyInstaller工作”“base_path = sys._MEIPASS,除了异常: base_path =os.path.abspath(”)。返回os.path.join(base_path,relative_path)文件=
基本上,pyinstaller将.txt文件捆绑到.py文件中,并创建一个.exe,以了解_MEIPASS的详细信息--参考链接:https://pyinstaller.readthedocs.io/en/v3.3.1/operating-mode.html#how-the-one-file-program-works
https://stackoverflow.com/questions/58470789
复制相似问题