使用PYTHONSTARTUP在解释器中交互测试Python文件
我想建立一个标准的脚本文件,这个文件会在启动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()