我有一个大项目,有一个很大的配置。文件并使用pyinstaller转换为可执行文件。是否可以编译整个项目,但在运行时保留/重新加载/导入此文件,以及如何?
(我可以将部分内容移动到json格式,并改变文件的逻辑,然后加载json文件,但不想加号,它是一个大文件,每个人都有他自己的副本已经...)
' config.py'中的一小部分内容。是:
import getpass
username = getpass.getuser()
data_files_dir = '/tmp/data'
bindings = 'UC'
if username.lower()=='nick':
data_files_dir = '/tmp/data'
....
....
我找到的唯一相关问题是this one,但它似乎要求更广泛的内容,加上答案('你错过了重点。你的脚本假设是最终产品。')绝对不适合我的情况...
答案 0 :(得分:1)
NTG;
我发现与PyInstaller一起使用的最佳解决方案是Python 3.4 importlib模块类SourceFileLoader,用于在运行时加载配置信息。这是一个样本。
档案:./ conf.py
"""
Configuration options
"""
OPT1='1'
OPT2='Option #2'
OPT3='The Lumberjack is ok'
OPT4='White over White. Have a nice flight'
接下来是一个示例脚本,它将在运行时导入conf信息。
文件:myapp.py
#!/usr/bin/python3
"""
The Application.
"""
import sys
from importlib.machinery import SourceFileLoader
# load your config file here
conf = SourceFileLoader( 'conf', './conf.py' ).load_module()
print("Option 1:", conf.OPT1)
print("Option 2:", conf.OPT2)
print("Option 3:", conf.OPT3)
print("Option 4:", conf.OPT4)
请注意,conf.py中的选项会导入到" conf"命名空间。您需要使用" conf。"为每个对conf项目的引用添加前缀。可能还有其他方法。