Python不会显示导入文件中的代码更改
Python不会显示导入文件中的代码更改
我正在使用Linux Python shell,每次我对导入的文件进行更改后,都需要重新启动shell(我尝试重新导入文件,但更改没有反映出来)。\n我在一个名为handlers.py的文件中有一个定义。\n
def testme(): print "Hello I am here"
\n我在Python shell中导入该文件。\n
>> import handlers as a >> a.testme() >> "Hello I am here"
\n然后我将print语句更改为\"Hello I am there\",重新导入handlers,但它没有显示更改?\n使用Python 2.7和Mint 17.1。
Python中的一个问题是,当从导入的文件中更改代码时,Python不会显示这些更改。这可能会导致程序员在调试和开发过程中遇到困难。为了解决这个问题,可以使用watchdog。
watchdog是一个Python库,可以监视指定为命令行参数的目录,并记录生成的事件。它支持多个平台,包括Linux、Mac OS X、FreeBSD/BSD和Windows。对于不支持特定平台的操作系统,watchdog还提供了一种通过轮询磁盘来获取目录快照并定期比较的解决方案,但是这种方法速度较慢,不推荐使用。
要使用watchdog来解决Python不显示导入文件中代码更改的问题,可以按照以下步骤操作:
1. 安装watchdog库:可以通过在命令行中运行pip install watchdog
来安装watchdog库。
2. 导入watchdog库:在Python文件中导入watchdog库,可以使用以下代码:import watchdog
。
3. 设置监视目录:使用watchdog库的API设置要监视的目录。可以使用以下代码示例:
from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class MyEventHandler(FileSystemEventHandler): def on_modified(self, event): # 处理文件更改事件 print("File modified:", event.src_path) observer = Observer() event_handler = MyEventHandler() observer.schedule(event_handler, path='path/to/directory', recursive=True) observer.start()
以上代码将创建一个观察者对象和一个事件处理程序对象。事件处理程序对象包含一个on_modified
方法,该方法在文件更改事件发生时被调用。在on_modified
方法中,可以编写处理文件更改事件的代码。
4. 运行监视程序:运行Python文件,监视程序将开始监视指定的目录。当目录中的文件发生更改时,将调用on_modified
方法,并执行相应的处理操作。
使用watchdog库,可以实时监视导入文件中的代码更改,并及时显示这些更改,从而帮助程序员更轻松地进行调试和开发。
Python does not show code changes from imported file
在使用Python时,发现无法显示导入文件的代码更改
原因:
这个问题的原因是因为Python在导入模块后,会缓存该模块的代码,导致在修改了导入的文件后,重新导入时不会显示代码的更改。
解决方法:
为了解决这个问题,可以使用reload()函数来重新加载模块。每次对导入的文件进行更改后,都需要使用reload()函数重新加载模块,然后再次导入。
代码示例:
reload(handlers) import handlers as a
通过使用reload()函数重新加载模块,并将重新加载的模块重新命名为a,就可以解决Python无法显示代码更改的问题。
在Python中,通过import语句导入的模块在被修改后,不会自动显示代码的更改。这可能会导致在重新运行程序时,导入的模块并没有更新。为了解决这个问题,可以使用reload函数来重新加载模块。
具体的解决方法如下:
1. 首先,导入要重新加载的模块,例如import lib。
2. 当需要重新加载模块时,使用imp.reload(lib)来重新加载模块。其中,lib是之前导入的模块的名称。
需要注意的是,imp模块在Python 3.4中已被弃用,取而代之的是importlib模块。在Python 3.4中,可以使用importlib.reload来重新加载模块。
在Python 2中,reload函数是一个内置函数,不需要导入imp模块,只需使用reload(lib)即可重新加载模块。
,为了实现更跨平台的代码,建议使用importlib.reload来重新加载模块。