6

我维护了一个内部 Python 包,公司中的一些非技术人员使用该包。由于他们的需求(或者更确切地说,他们的需求)几乎每天都在变化,因此我必须经常更新库,并且我会根据他们的喜好经常为他们创建新的安装程序。

该库提供对自定义内部数据库的高级访问。此时,我知道我可以将 lib 版本与查询请求一起发送,并向用户显示一条消息,其结果是他们需要安装更新。

然而,由于这些人似乎认为点击一个 .exe 文件并点击安装程序上的“下一步”按钮花费的时间太长,因此我被要求查看是否有自动更新的方法当他们执行“import X”调用时的库。

我从来没有遇到过这种请求,我想如果可能的话,大多数流行的图书馆都会提供这个选项。但我以前错了,而且经常错。有没有人成功地做到过这一点?

4

2 回答 2

2

如果这只是一个评论,我很抱歉。
但我认为有几个选择。而且我必须同意 Cartroo,一个 reload() 函数可能就足够了。

在这个(迷人的 Python:动态重新加载)网站上有一篇很棒的文章。我不完全确定这是否正是您要寻找的,但文章中的示例似乎非常符合您的需求。

让我们为本文画一个场景:假设您想在本地机器上运行一个进程,但您的程序逻辑的一部分存在于其他地方。具体来说,让我们假设这个程序逻辑会不时更新,并且当您运行您的流程时,您希望使用最新的程序逻辑。有许多方法可以解决刚刚描述的要求;本文将向您介绍其中的几个。

于 2013-04-03T14:18:19.480 回答
1

让“import X”调用在包装库中运行代码。导入时的代码将检查数据库中是否有新版本的库,如果有更改则下载。然后它可以依次导入下载的库或导入现有的库。冻结代码可能存在此问题,因此您可能必须显式评估新模块。

编辑: 这不一定需要在另一个模块中完成。它可能只是一个函数调用。

于 2013-04-06T12:17:11.110 回答