使用PYTHONSTARTUP在解释器中交互测试Python文件

0 投票
2 回答
739 浏览
提问于 2025-04-16 06:03

我想建立一个标准的脚本文件,这个文件会在启动Python时自动导入,方法是使用PYTHONSTARTUP这个环境变量。此外,我还希望在用外部编辑器修改这个脚本文件后,能够方便地重新加载它,以测试修改后的效果。

我创建了一个名为~/.pythonrc.py的文件,并把它设置为PYTHONSTARTUP:

import os
import imp

def load_wb():
    _cwd = os.getcwd()
    os.chdir(os.path.join(os.getenv('HOME'),'Skripte'))
    import workbench
    imp.reload(workbench)
    os.chdir(_cwd)

load_wb()

这是我非常简单的启动脚本:

def dull_function():
    print('Not doing much...')

print('Workbench loaded.')

当我启动Python 3.1.2时,.pythonrc文件成功执行了,workbench.py也被导入了,但dull_function这个函数却没有出现在全局命名空间或局部命名空间里。我需要做些什么不同的事情呢?

2 个回答

0

这其实不是直接解决你眼前的问题,不过... 你可能会喜欢用iPython shell来测试,这样会更方便。在这个环境里,有个自动导入的功能,你可以设置一个模块在每次执行代码时都重新加载,如果需要的话。

这就意味着你可以用 %aimport workbench 这个命令,然后每次你运行 some_function_Im_testing() 时,如果 workbench 有变化,它就会被重新加载。只需要把这个自动导入的命令加到iPython的配置文件里,就搞定了。

0

import 语句放到函数外面。你现在是把 workbench 模块引入到了函数的范围内,而不是全局范围内(你可以试着在 load_wb 函数里面调用 workbench.dull_function 来验证一下)。

换句话说,把你的代码改成:

import os
import imp
import workbench

def load_wb():
    _cwd = os.getcwd()
    os.chdir(os.path.join(os.getenv('HOME'), 'Skripte'))
    imp.reload(workbench)
    os.chdir(_cwd)

load_wb()

撰写回答