使用PYTHONSTARTUP以交互方式测试解释器中的python文件

时间:2010-10-25 14:41:39

标签: python python-3.x

我想建立一个标准的脚本文件,在启动时使用PYTHONSTARTUP环境变量导入到python中。另外,我希望能够在外部编辑器中修改相同的脚本文件后方便地重新加载,以便在修改后测试其行为。 我创建了一个〜/ .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 :(得分:0)

import语句移到函数外部。您基本上是将workbench模块导入到函数范围,而不是全局范围(尝试从workbench.dull_function内部调用load_wb来亲自查看。)

换句话说,将您的代码更改为:

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()

答案 1 :(得分:0)

并没有真正解决您的直接问题但是......在这种情况下,您可能会喜欢使用iPython shell进行测试。使用自动导入功能,您可以根据需要在每个执行的行上标记一个模块(重新)加载。

这意味着您可以%aimport workbench,然后每次运行some_function_Im_testing()时,workbench都会在重新加载后重新加载。只需将autoimport行添加到ipython的配置文件中即可。