相关疑难解决方法(0)

动态加载python模块

在python中,如何在编程运行时动态地将模块添加到包中.

我希望能够从外部进程将模块添加到包目录中,并且能够在我的程序中使用这些新模块:

import package

def doSomething(name):
    pkg = __import__("package." + name)
    mod = getattr(pkg, name)
    mod.doSomething()
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python dynamic python-import

51
推荐指数
5
解决办法
6万
查看次数

查找模块中明确定义的函数(python)

好的,我知道你可以使用dir()方法列出模块中的所有内容,但有没有办法只查看该模块中定义的函数?例如,假设我的模块如下所示:

from datetime import date, datetime

def test():
    return "This is a real method"
Run Code Online (Sandbox Code Playgroud)

即使我使用inspect()过滤掉内置函数,我仍然留下任何导入的东西.我会看到:

['date','datetime','test']

有没有办法排除进口?或者另一种方法来找出模块中定义的内容?

python introspection

22
推荐指数
2
解决办法
8837
查看次数

如何使用iPython进行unpickling?

我正在尝试在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,但我也遇到了以前版本的问题.

python pickle ipython

7
推荐指数
1
解决办法
4100
查看次数

标签 统计

python ×3

dynamic ×1

introspection ×1

ipython ×1

pickle ×1

python-import ×1