8

我希望代码更改在开发过程中立即生效。如何检测更改的文件并在正在运行的 Python (2.7) 应用程序中重新加载它们?

编辑:

在阅读了“Ivo van der Wijk”链接的页面后,我认为最好在代码更改时重新启动 Web 应用程序——就像 Django 那样。所以实际的问题是:如何监控文件修改?

4

3 回答 3

7

我希望我的一些 Python 脚本具有相同的效果,所以我继续制作脚本 SourceChangeMonitor.py。你可以在这里找到它的说明。如果您只想要脚本,这里是一个直接链接

于 2011-11-10T11:19:31.583 回答
6

这个问题已经被问很多

您可以为此使用 reload(module),但要注意讨厌的副作用。例如,现有代码将基于原始代码,它不会神奇地添加新属性或基类。

于 2010-10-05T10:43:46.173 回答
2

这对大多数应用程序没有意义,因为使用reload. 加上您花在检测更改和重新加载所有模块的代码上的时间可能只花在重新启动应用程序上。如果您导入大量模块或有一个包含许多子模块的项目,这将非常复杂。

在某些情况下,这是一个好主意。Django Web 框架提供了一个开发服务器 ( manage.py runserver),它会自动重新加载更改的模块。看一下django.utils.autoreload- 它使用文件的修改时间测试所有 Python 文件的修改。如前所述,这仅适用于某些应用程序。Web 应用程序在某种程度上是无状态的,因此可以重新加载而几乎没有副作用。

于 2010-10-05T10:51:04.393 回答