【发布时间】:2020-02-25 17:15:17
【问题描述】:
我正在做一个简单的开源项目。 Github link。应用程序是用tkinter 编写的。它是一种计算器。我想允许用户在安装过程中对其进行配置(但只有在那时,没有用于更改设置的单独菜单)。目前默认值保存在类中。我想增加使用的可能性:pip3 install . --install-option="--customize={'my_value1': 1, 'my_value2': 2}"。我知道我可以一一添加它们,但是其中很多,这就是我决定使用字典的原因。下面我添加了我的代码,我尝试将这些设置保存到json 文件并稍后与应用程序一起使用:
from setuptools import setup
from setuptools.command.install import install
from json import dumps, loads, JSONDecodeError
class Handler:
def __init__(self, data):
self.config = 'WorkTimeSaver/data.json'
self.data = self.convert(data)
if self.data:
self.save()
else:
print('Wrong format of data, default values will be used.')
def convert(self, settings):
try:
data = loads(settings)
if isinstance(data, dict):
return data
except JSONDecodeError:
return False
def save(self):
with open(self.config, 'w') as config:
config.write(dumps(self.data))
class InstallCommand(install):
user_options = install.user_options + [
('customize=', None, 'pass dictionary with values used to calculate salary'),
]
def initialize_options(self):
install.initialize_options(self)
self.customize = None
def finalize_options(self):
install.finalize_options(self)
def run(self):
Handler(self.customize)
install.run(self)
setup(
name='WorkTimeSaver',
packages=['WorkTimeSaver'],
entry_points={'console_scripts': 'WorkTimeSaver=WorkTimeSaver.__main__:main'},
cmdclass={'install': InstallCommand}
)
上面代码的问题是它没有创建任何json 文件。不在安装目录中,甚至不在包目录中。这是我第一次尝试开发自己的包。 This thread 帮我写代码。我不知道如何纠正它。你能告诉我我该如何解决吗?有没有更优雅的方法来实现它(例如不使用json 文件)?
【问题讨论】:
-
你能不能有一个平面文件,其中包含一个设置为零的布尔值的配置。然后在第一次运行程序时检查该布尔值,然后要求用户在弹出窗口中更新一些配置,然后布尔值设置为 1,因此从现在开始它不会要求更新。
-
“允许用户在安装过程中配置它(但只有在那个时候”:这种方法有点麻烦。用户将如何编辑一个输入错误的数据?
标签: python parameters pip installation