我在使用 pyinstaller 构建 exe 时遇到了一个奇怪的错误。我使用 conda 虚拟环境,较小的应用程序可以编译正常。然而它给了我一个错误:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'C:\ Users \ me \ AppData \ Local \ Temp \ _MEI140402 \ llama_index \ VERSION'
奇怪的是,该程序在我的系统上运行一切正常,但我在制作这个 exe 时遇到了很多问题。当我在本地运行时,临时文件夹中没有这样的文件。
还有其他选项来分发我的代码吗?
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['run.py'],
pathex=[ all extra paths ],
binaries=[],
datas=[('added_hook.py', '.'),
],
hiddenimports=['docmaker'],
hookspath=['all hooks' ],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='run',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='run',
)
我将所有路径添加到我的路径中,以便 pyinstaller 会选择它,甚至是临时文件夹。
我还添加了一个名为added_hook.py 的py 文件,它通过代码添加了更多资源。我尝试这样做是为了确保 pyinstaller 会收集更多文件来编译 .exe
从 PyInstaller.utils.hooks 导入collect_data_files
数据=collect_data_files('资源')
有同样的问题。丢失的文件位于 llama_index/ 软件包安装目录本身中。不知道如何通过 pyinstaller 包含此文件
对我有用的讨厌的黑客:(但随后炸毁了变压器未安装的想法......)
数据+= [('.venv/lib/python3.11/site-packages/llama_index/VERSION', 'llama_index/')]