Python不会显示导入文件中的代码更改

6 浏览
0 Comments

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。

0
0 Comments

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库,可以实时监视导入文件中的代码更改,并及时显示这些更改,从而帮助程序员更轻松地进行调试和开发。

0
0 Comments

Python does not show code changes from imported file

在使用Python时,发现无法显示导入文件的代码更改

原因:

这个问题的原因是因为Python在导入模块后,会缓存该模块的代码,导致在修改了导入的文件后,重新导入时不会显示代码的更改。

解决方法:

为了解决这个问题,可以使用reload()函数来重新加载模块。每次对导入的文件进行更改后,都需要使用reload()函数重新加载模块,然后再次导入。

代码示例:

reload(handlers)
import handlers as a

通过使用reload()函数重新加载模块,并将重新加载的模块重新命名为a,就可以解决Python无法显示代码更改的问题。

0
0 Comments

在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来重新加载模块。

0