在python中,如何在编程运行时动态地将模块添加到包中.
我希望能够从外部进程将模块添加到包目录中,并且能够在我的程序中使用这些新模块:
import package
def doSomething(name):
pkg = __import__("package." + name)
mod = getattr(pkg, name)
mod.doSomething()
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
好的,我知道你可以使用dir()方法列出模块中的所有内容,但有没有办法只查看该模块中定义的函数?例如,假设我的模块如下所示:
from datetime import date, datetime
def test():
return "This is a real method"
Run Code Online (Sandbox Code Playgroud)
即使我使用inspect()过滤掉内置函数,我仍然留下任何导入的东西.我会看到:
['date','datetime','test']
有没有办法排除进口?或者另一种方法来找出模块中定义的内容?
我正在尝试在iPython中加载pickle对象.
我得到的错误是:
AttributeError:'FakeModule'对象没有属性'World'
有人知道如何让它工作,或者至少是在iPython中加载对象以便以交互方式浏览它们的解决方法吗?
谢谢
编辑添加:
我有一个名为world.py的脚本基本上可以:
import pickle
class World:
""
if __name__ == '__main__':
w = World()
pickle.dump(w, open("file", "wb"))
Run Code Online (Sandbox Code Playgroud)
比在REPL我做:
import pickle
from world import World
w = pickle.load(open("file", "rb"))
Run Code Online (Sandbox Code Playgroud)
它适用于vanilla python REPL但不适用于iPython.
我正在使用来自Enthought Python Distribution的Python 2.6.5和iPython 0.10,但我也遇到了以前版本的问题.