【发布时间】:2020-03-09 14:23:59
【问题描述】:
TLDR
为了让我的问题更清楚一点,我不想将配置文件与 pyinstaller 捆绑在一起。这是因为如果它不存在,应用程序将创建它。我想要做的是让 pyinstaller 编译二进制文件来读取配置文件(如果它已经存在)。
我正在尝试在一个小项目上使用 pyinstaller,该项目使用基于 configparser 的 ini 文件来加载某些变量。当我的项目使用 pip 安装并首次运行时,它将查找并且如果不存在,则在主目录中创建必要的配置文件。这适用于 windows、osx 和 linux。
我遇到的问题是,当我使用 pyinstaller 编译项目时,它不会寻找这个。
我的问题是,我如何编译我的项目,以便它在运行时查看配置文件的指定位置?最好使用onefile 选项。我的项目是here。
例如,在我的配置文件中,我有一个名为 pluginpath 的配置对象。如果我运行我的 pip 安装项目,则从基于家庭的配置文件中读取插件路径,并打印路径(如果我向其添加了新值)。但是如果我从编译的二进制文件中运行它,那么它会打印None,这是默认值。
我的规范生成了一个文件规范文件
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['cli.py'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='chepy',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True )
【问题讨论】:
标签: python python-3.x pyinstaller