2013-04-03 53 views
6

我维护一个由公司内部一些非真正技术人员使用的内部Python包。由于他们的需求(或者说他们的需求)几乎每天都在变化,所以我不得不经常更新库,并且我经常为他们创建新的安装程序。是否可以即时升级Python包?

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

但是,因为这些人似乎认为花几秒钟点击一个.exe文件并单击安装程序上的“下一步”按钮需要很长时间,我被要求查看是否有当他们执行“导入X”调用时自动更新库的方式。

我从来没有碰到过这样的要求,我在想,如果这是可能的,最流行的库将提供这个选项。但是我之前和之后都错了。有没有人成功地做过这件事?

+0

我已经看到过这个成功的过程,因为你描述的原因。这并不难,但我无法想象Python模块的开箱即用解决方案。 (+1) – NPE

+2

我不明白为什么你不能下载所有文件,将它们复制到位,然后调用模块上的'reload()...但我真的不认为这是个好主意。如果有更新会破坏所有内容呢?人们无法防止他们的系统被自动升级破坏。如果他们需要更新的速度很快,他们不能直接从您使用的回购中的分支工作,而不是使用安装程序?然后他们可以随时下沉。或者他们当然可以不那么懒惰。 (^_^) – Cartroo

+1

@Cartroo:我不认为破损是一个问题。毕竟,运行安装程序可能会破坏一切。 –

回答

2

我道歉,如果这仅仅是一个注释。
但我觉得有几个选项可用。我必须同意Cartroo,重载()函数可能就足够了。

有上this (Charming Python: Reloading on the fly)网站一个伟大的文章。我不完全确定这是否正是您所期望的,但文章中的示例似乎与您的需求非常接近。

让我们来画一个场景此文章:假设你想在本地机器上运行 过程,但你的程序逻辑的一部分生活 别处。具体而言,我们假设这个程序逻辑 不时更新的时间,当你运行你的过程中,你会 喜欢使用最新的程序逻辑。有许多方法来解决刚刚描述的要求;这篇文章 引导你了解其中的几个。

1

有“进口X”调用运行在一个包装库代码。导入时间的代码将检查数据库的新版本库,如果它已更改,则下载。然后它可以依次导入下载的库或导入现有的库。对于冻结的代码可能存在问题,因此您可能必须明确评估新模块。

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