【发布时间】:2014-07-21 01:54:14
【问题描述】:
我有一个名为 KosmoSuite 的模块,按照 __init__.py 进行了初始化
...
from chemical_fuels import *
from orbital_mechanics import *
from termodynamics import *
from rail_guns import *
...
在文件chemical_fuels.py, orbital_mechanics.py, termodynamics.py, rail_guns.py 中包含一些数据表、常数和用于进行一些物理计算的函数(例如函数orbital_mechanics.escape_velocity(M,R) 用于计算从给定质量和半径的行星的逃逸速度)
我想使用 python 解释器作为空间相关问题的交互式计算器。
但是,问题在于交互式开发和调试。当我这样做时
>>> import KosmoSuite as ks
# ... modify something in orbital_mechanics.escape_velocity( ) ...
>>> reload(ks)
>>> ks.orbital_velocity( R, M)
但是ks.orbital_velocity( R, M) 不受我对orbital_mechanics.escape_velocity() 的修改的影响。 reload(ks) 是否有其他替代方法可以完成这项工作(即重新加载由from some_module import * 递归导入的所有对象、常量和函数)
更好的是像
>>> from KosmoSuite import *
# ... modify something in orbital_mechanics.escape_velocity( ) ...
>>> from KosmoSuite reimport *
>>> orbital_velocity( R, M)
脚注:我现在正在使用 Spyder ( Python(x,y) ),但默认的 Python 解释器也是如此。在this question 中是关于IPython 中的deep-reload (dreload)。我不确定它是否能完成这项工作,但无论如何我都不喜欢 IPython。
【问题讨论】:
标签: python python-import spyder