我想建立一个标准的脚本文件,在启动时使用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没有出现在全局命名空间或本地命名空间中。我有什么不同的做法?
答案 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的配置文件中即可。