gpt4 book ai didi

python - 如何通过pyinstaller在可执行文件中包含json

转载 作者:行者123 更新时间:2023-12-04 00:25:42 25 4
gpt4 key购买 nike

尝试使用以下内容构建 specs.spec 文件,以在可执行文件中包含 JSON 文件。


block_cipher = None

added_files = [
( 'configREs.json', '.'), # Loads the '' file from
# your root folder and outputs it with
# the same name on the same place.
]


a = Analysis(['gui.pyw'],
pathex=['D:\\OneDrive\\Programming\\Python Projects\\Python'],
binaries=[],
datas=added_files,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='name here',
debug=False,
strip=False,
upx=True,
console=False, icon='iconname.ico', version='version.rc' )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='gui')

就像 add json file with pysintaller 中推荐的 Clint

但不工作。

  1. 在 cmd 中像这样构建规范文件 - pyi-makespec specs.py
  2. 然后构建可执行文件 - pyinstaller.exe --onefile --windowed --icon=logo1.ico script.py
  3. 如果没有将 JSON 文件放在与可执行文件相同的目录中,则无法正常工作
  4. 有什么建议吗?

最佳答案

使用 add-data 添加文件后标志,在运行时这些文件会被提取到一个临时目录中,比如 C:/User/Appdata/local/temp/_MEIXXX,所以你需要从这个目录加载文件。

您可以使用 sys._MEIPASS获取当前临时目录并从那里加载您的文件。

import os
import sys


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


if __name__ == "__main__":
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
resource_path('configREs-.json'), scope)
client = gspread.authorize(credentials)

然后生成您的可执行文件添加 --add-data 标志:

--add-data <SRC;DEST or SRC:DEST>

Additional non-binary files or folders to be added to the executable. The path separator is platform specific, os.pathsep (which is ; on Windows and : on most unix systems) is used. This option canbe used multiple times.

# The path separator is ; on Windows and : on most unix systems
pyinstaller -F --add-data "configREs.json;." script.py

关于python - 如何通过pyinstaller在可执行文件中包含json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com